A date implementation with timezone info, just like Ruby date
Implementation:
- create a Date offset by it’s timezone difference, avoiding overriding a bunch of methods
- rewrite getTimezoneOffset() to trick strftime
Hierarchy
- TimezoneDate
Implements
Constructors
constructor
+ new TimezoneDate(init: string | number | Date | TimezoneDate, timezoneOffset: number): TimezoneDate
Defined in src/util/timezone-date.ts:17
Parameters:
| Name | Type |
|---|---|
init |
string | number | Date | TimezoneDate |
timezoneOffset |
number |
Returns: TimezoneDate
Properties
Private date
• date: Date
Defined in src/util/timezone-date.ts:17
Private timezoneOffset
• timezoneOffset: number
Defined in src/util/timezone-date.ts:16
Methods
getDate
▸ getDate(): number
Implementation of LiquidDate
Defined in src/util/timezone-date.ts:49
Returns: number
getDay
▸ getDay(): number
Implementation of LiquidDate
Defined in src/util/timezone-date.ts:46
Returns: number
getFullYear
▸ getFullYear(): number
Implementation of LiquidDate
Defined in src/util/timezone-date.ts:55
Returns: number
getHours
▸ getHours(): number
Implementation of LiquidDate
Defined in src/util/timezone-date.ts:43
Returns: number
getMilliseconds
▸ getMilliseconds(): number
Implementation of LiquidDate
Defined in src/util/timezone-date.ts:34
Returns: number
getMinutes
▸ getMinutes(): number
Implementation of LiquidDate
Defined in src/util/timezone-date.ts:40
Returns: number
getMonth
▸ getMonth(): number
Implementation of LiquidDate
Defined in src/util/timezone-date.ts:52
Returns: number
getSeconds
▸ getSeconds(): number
Implementation of LiquidDate
Defined in src/util/timezone-date.ts:37
Returns: number
getTime
▸ getTime(): number
Implementation of LiquidDate
Defined in src/util/timezone-date.ts:30
Returns: number
getTimezoneOffset
▸ getTimezoneOffset(): number
Implementation of LiquidDate
Defined in src/util/timezone-date.ts:64
Returns: number
toLocaleDateString
▸ toLocaleDateString(locale?: undefined | string): string
Defined in src/util/timezone-date.ts:61
Parameters:
| Name | Type |
|---|---|
locale? |
undefined | string |
Returns: string
toLocaleTimeString
▸ toLocaleTimeString(locale?: undefined | string): string
Defined in src/util/timezone-date.ts:58
Parameters:
| Name | Type |
|---|---|
locale? |
undefined | string |
Returns: string
Static createDateFixedToTimezone
▸ createDateFixedToTimezone(dateString: string): LiquidDate
Defined in src/util/timezone-date.ts:81
Create a Date object fixed to it’s declared Timezone. Both
- 2021-08-06T02:29:00.000Z and
- 2021-08-06T02:29:00.000+08:00
will always be displayed as - 2021-08-06 02:29:00
regardless timezoneOffset in JavaScript realm
The implementation hack:
Instead of calling .getMonth()/.getUTCMonth() respect to preserveTimezones,
we create a different Date to trick strftime, it’s both simpler and more performant.
Given that a template is expected to be parsed fewer times than rendered.
Parameters:
| Name | Type |
|---|---|
dateString |
string |
Returns: LiquidDate