Skip to content

Commit f60c192

Browse files
committed
fix: Clone return time zone list to prevent the caller from modifying the cached value
Use getTime instead of valueOf for clarity.
1 parent 63719e2 commit f60c192

File tree

5 files changed

+10
-10
lines changed

5 files changed

+10
-10
lines changed

perf/getZonedTime.perf.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const createSuite = require('./createSuite')
22
const { findTimeZone, getZonedTime } = require('../dist')
33

4-
const unixTime = new Date(2018, 9, 1, 18, 1, 36, 386).valueOf()
4+
const unixTime = new Date(2018, 9, 1, 18, 1, 36, 386).getTime()
55
const berlin = findTimeZone('Europe/Berlin')
66

77
function getZonedTimeUsingDate () {

src/convert/convert.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ function attachEpoch (time, unixTime) {
2121
}
2222

2323
function getUTCOffset (date, timeZone) {
24-
const unixTime = typeof date === 'number' ? date : date.valueOf()
24+
const unixTime = typeof date === 'number' ? date : date.getTime()
2525
const { abbreviation, offset } = getTransition(unixTime, timeZone)
2626
return { abbreviation, offset }
2727
}
2828

2929
function getZonedTime (date, timeZone) {
3030
const gotUnixTime = typeof date === 'number'
31-
const unixTime = gotUnixTime ? date : date.valueOf()
31+
const unixTime = gotUnixTime ? date : date.getTime()
3232
const { abbreviation, offset } = getTransition(unixTime, timeZone)
3333
if (gotUnixTime || offset) {
3434
date = new Date(unixTime - offset * 60000)
@@ -99,7 +99,7 @@ function convertDateToTime (date) {
9999
: '???',
100100
offset: date.getTimezoneOffset()
101101
}
102-
attachEpoch(time, date.valueOf())
102+
attachEpoch(time, date.getTime())
103103
return time
104104
}
105105

src/lookup/lookup.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ let names
55
let links
66
let instances
77

8-
function populateTimeZones (data) {
8+
function populateTimeZones ({ zones: zoneData, links: linkData }) {
99
zones = {}
10-
names = data.zones.map(packed => {
10+
names = zoneData.map(packed => {
1111
const name = packed.substr(0, packed.indexOf('|'))
1212
zones[name] = packed
1313
return name
1414
})
15-
links = data.links.reduce((result, packed) => {
15+
links = linkData.reduce((result, packed) => {
1616
const [ name, alias ] = packed.split('|')
1717
result[alias] = name
1818
return result
@@ -21,7 +21,7 @@ function populateTimeZones (data) {
2121
}
2222

2323
function listTimeZones () {
24-
return names
24+
return names.slice()
2525
}
2626

2727
function findTimeZone (alias) {

test/convertDateToTime.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ it('converts a date to time', () => {
1919
expect(minutes).toEqual(30)
2020
expect(seconds).toEqual(15)
2121
expect(milliseconds).toEqual(234)
22-
expect(epoch).toEqual(date.valueOf())
22+
expect(epoch).toEqual(date.getTime())
2323
expect(typeof zone === 'object').toBeTruthy()
2424
const { abbreviation, offset } = zone
2525
expect(/\w+/.test(abbreviation)).toBeTruthy()

test/getZonedTime.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ it('converts the UNIX time to the correct time object', () => {
3333

3434
it('recognizes daylight-saving time', () => {
3535
const unixTime = Date.UTC(2018, 6, 2, 9, 30, 15, 234)
36-
const berlinTime = getZonedTime(unixTime.valueOf(), berlin)
36+
const berlinTime = getZonedTime(unixTime, berlin)
3737
expect(typeof berlinTime === 'object').toBeTruthy()
3838
const { year, month, day, dayOfWeek, hours, minutes, seconds, milliseconds, zone, epoch } = berlinTime
3939
expect(year).toEqual(2018)

0 commit comments

Comments
 (0)