lune/types/datetime.luau

109 lines
2 KiB
Lua

-- 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