Class: TimezoneDate

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