-
Notifications
You must be signed in to change notification settings - Fork 110
/
test.js
63 lines (52 loc) · 2.37 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import assert from 'power-assert'
import { getTimezoneOffset } from './index.js'
const hours = 60 * 60 * 1000
describe('getTimezoneOffset', function () {
it('Empty time zone', function () {
assert.equal(getTimezoneOffset(''), 0)
})
it('Z time zone', function () {
assert.equal(getTimezoneOffset('Z'), 0)
})
it('±hh time zone format', function () {
assert.equal(getTimezoneOffset('-04'), -4 * hours)
assert.equal(getTimezoneOffset('+02'), 2 * hours)
})
it('±hhmm time zone format', function () {
assert.equal(getTimezoneOffset('-0430'), -4.5 * hours)
assert.equal(getTimezoneOffset('+0230'), 2.5 * hours)
})
it('±hh:mm time zone format', function () {
assert.equal(getTimezoneOffset('-05:00'), -5 * hours)
assert.equal(getTimezoneOffset('+03:00'), 3 * hours)
})
it('IANA time zone', function () {
assert.equal(getTimezoneOffset('America/New_York', new Date(2016, 0, 1)), -5 * hours)
assert.equal(getTimezoneOffset('America/New_York', new Date(2016, 6, 1)), -4 * hours)
assert.equal(getTimezoneOffset('Europe/Paris', new Date(2016, 0, 1)), 1 * hours)
assert.equal(getTimezoneOffset('Europe/Paris', new Date(2016, 6, 1)), 2 * hours)
assert.equal(getTimezoneOffset('Australia/Sydney', new Date(2016, 0, 1)), 11 * hours)
assert.equal(getTimezoneOffset('Australia/Sydney', new Date(2016, 6, 1)), 10 * hours)
assert.equal(getTimezoneOffset('Australia/Adelaide', new Date(2016, 6, 1)), 9.5 * hours)
assert.equal(getTimezoneOffset('Africa/Johannesburg'), 2 * hours)
})
it('bad time zone', function () {
assert.equal(Number.isNaN(getTimezoneOffset('+0260')), true)
assert.equal(Number.isNaN(getTimezoneOffset('+02:60')), true)
assert.equal(Number.isNaN(getTimezoneOffset('Europe/Non_Existing')), true)
})
describe('near DST changeover (AEST to AEDT)', function () {
it('one day before', function () {
var date = new Date('2020-10-04T00:45:00.000Z')
assert.equal(getTimezoneOffset('Australia/Melbourne', date), 10 * hours)
})
it('15 minutes before', function () {
var date = new Date('2020-10-04T01:45:00.000Z')
assert.equal(getTimezoneOffset('Australia/Melbourne', date), 10 * hours)
})
it('15 minutes after', function () {
var date = new Date('2020-10-04T03:15:00.000Z')
assert.equal(getTimezoneOffset('Australia/Melbourne', date), 11 * hours)
})
})
})