Skip to main content
Module

x/dayjs/test/timezone.test.js

⏰ Day.js 2kB immutable date-time library alternative to Moment.js with the same modern API
Go to Latest
File
import MockDate from 'mockdate'import moment from 'moment'import dayjs from '../src'import timezone from '../src/plugin/timezone'import utc from '../src/plugin/utc'
dayjs.extend(utc)dayjs.extend(timezone)
beforeEach(() => { MockDate.set(new Date())})
afterEach(() => { MockDate.reset()})
it('Add Time days (DST)', () => { // change timezone before running test // New Zealand (-720) expect(dayjs('2018-04-01').add(1, 'd').format()).toBe(moment('2018-04-01').add(1, 'd').format()) expect(dayjs('2018-03-28').add(1, 'w').format()).toBe(moment('2018-03-28').add(1, 'w').format()) // London (-60) expect(dayjs('2018-10-28').add(1, 'd').format()).toBe(moment('2018-10-28').add(1, 'd').format()) expect(dayjs('2018-10-26').add(1, 'w').format()).toBe(moment('2018-10-26').add(1, 'w').format())})
it('Utc Offset', () => { expect(dayjs().utcOffset()).toBe(moment().utcOffset())})
it('Diff (DST)', () => { const day = '2018-10-28' const dayjsA = dayjs(day) const dayjsB = dayjs(day).add(-1000, 'days') const momentA = moment(day) const momentB = moment(day).add(-1000, 'days') const units = ['seconds', 'minutes', 'hours', 'days', 'weeks', 'months', 'quarters', 'years'] units.forEach((unit) => { expect(dayjsA.diff(dayjsB, unit)).toBe(momentA.diff(momentB, unit)) expect(dayjsA.diff(dayjsB, unit, true)).toBe(momentA.diff(momentB, unit, true)) })})
it('UTC add day in DST', () => { const testDate = '2019-03-10' const dayTest = dayjs(testDate) .utc() .startOf('day') const momentTest = moment(testDate) .utc() .startOf('day') expect(dayTest.add(1, 'day').format()) .toBe(momentTest.clone().add(1, 'day').format()) expect(dayTest.add(2, 'day').format()) .toBe(momentTest.clone().add(2, 'day').format())})
it('UTC and utcOffset', () => { const test1 = 1331449199000 // 2012/3/11 06:59:59 GMT+0000 expect(dayjs(test1).utcOffset(-300).format()) .toBe(moment(test1).utcOffset(-300).format()) const test2 = '2000-01-01T06:31:00Z' expect(dayjs.utc(test2).utcOffset(-60).format()) .toBe(moment.utc(test2).utcOffset(-60).format())
// across DST, copied from utc.test.js#get utc offset with a number value const time = '2021-02-28 19:40:10' const hoursOffset = -8 const daysJS = dayjs(time).utc().utcOffset(hoursOffset * 60, true) const momentJS = moment(time).utc(true).utcOffset(hoursOffset, true)
expect(daysJS.toISOString()).toEqual(momentJS.toISOString())})
it('UTC diff in DST', () => { // DST till 2020-10-25 const day1 = dayjs.utc('20201023') // in DST const day2 = dayjs.utc('20201026') expect(day1.diff(day2, 'd')) .toBe(-3)})