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