From c46ae61d34f9d9775b6e9923abed533f5f2cb1c7 Mon Sep 17 00:00:00 2001 From: Compey Date: Sun, 27 Aug 2023 12:46:00 +0530 Subject: [PATCH] feat: include types for @lune/datetime --- types/datetime.luau | 109 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 types/datetime.luau diff --git a/types/datetime.luau b/types/datetime.luau new file mode 100644 index 0000000..1e1756c --- /dev/null +++ b/types/datetime.luau @@ -0,0 +1,109 @@ +-- TODO: Add docs + +export type Locale = "en" | "de" | "es" | "fr" | "it" | "ja" | "pl" | "pt-br" | "pt" | "tr" + +export type Timezone = "utc" | "local" + +export type ShortMonth = + "jan" + | "feb" + | "mar" + | "apr" + | "may" + | "jun" + | "jul" + | "aug" + | "sep" + | "oct" + | "nov" + | "dec" + +export type Month = + "january" + | "february" + | "march" + | "april" + | "may" + | "june" + | "july" + | "august" + | "september" + | "october" + | "november" + | "december" + +export type DateTimeValues = { + year: number, + month: number | ShortMonth | Month, + day: number, + hour: number, + minute: number, + second: number, + millisecond: number, +} + +export type DateTime = { + unixTimestamp: number, + unixTimestampMillis: number, + + toIsoDate: (self: DateTime) -> string, + toLocalTime: (self: DateTime) -> DateTimeValues, + toUniversalTime: (self: DateTime) -> DateTimeValues, + formatTime: ( + self: DateTime, + timezone: Timezone, + formatString: string, + locale: Locale + ) -> string, +} + +--[=[ + @class DateTime + + Built-in library for date & time manipulation + + ### Example usage + + ```lua + local DateTime = require("@lune/datetime") + ``` +]=] +local dateTime = {} + +--[=[ + @within DateTime + + Returns a `DateTime` representing the current moment in time. + + @return A DateTime instance +]=] +function dateTime.now(): DateTime + return nil :: any +end + +--[=[ + @within DateTime + + Returns a new `DateTime` object from the given Unix timestamp, or + the number of **seconds** since January 1st, 1970 at 00:00 (UTC). + + @param unixTimestamp The number of seconds or milliseconds (or both) since the Unix epoch. The fraction part of a float denotes the milliseconds. + @return A DateTime instance +]=] +function dateTime.fromUnixTimestamp(unixTimestamp: number?): DateTime + return nil :: any +end + +function dateTime.fromUniversalTime(dateTime: DateTimeValues?): DateTime + return nil :: any +end + +function dateTime.fromLocalTime(dateTime: DateTimeValues?): DateTime + return nil :: any +end + +function dateTime.fromIsoDate(iso_date: string): DateTime? + return nil :: any +end + +return dateTime