diff --git a/README.md b/README.md index 66e2165..e8b002f 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ var ts = require('@mapbox/timespace'); var timestamp = Date.now(); var point = [-122.27783203125, 37.84015683604136]; var time = ts.getFuzzyLocalTimeFromPoint(timestamp, point); -//=> (a `moment-timezone` object – see https://momentjs.com/timezone/) +//=> (a `DateTime` object – see https://moment.github.io/luxon/api-docs/index.html#datetime) var tile = [41, 98, 8]; // the tile [x, y, z] whose timezone we want to know diff --git a/index.js b/index.js index 6347e3b..e7a2bb3 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,6 @@ var tiles = require('./lib/timezones.json'); var tilebelt = require('@mapbox/tilebelt'); -var moment = require('moment-timezone'); +const { DateTime } = require('luxon'); var ss = require('simple-statistics'); var z = Object.keys(tiles)[0].split('/').map(Number)[2]; @@ -17,13 +17,13 @@ module.exports = { * Returns the local time at the point of interest. * @param {Integer} timestamp a unix timestamp * @param {Array} point a [lng, lat] point of interest - * @return {Object} a moment-timezone object + * @return {DateTime} a luxon DateTime object */ function getFuzzyLocalTimeFromPoint(timestamp, point) { var tile = tilebelt.pointToTile(point[0], point[1], z).join('/'); var locale = tiles[tile]; - if (locale) return moment.tz(new Date(timestamp), locale); + if (locale) return DateTime.fromMillis(timestamp).setZone(locale); else return undefined; } @@ -58,7 +58,7 @@ function getFuzzyTimezoneFromTile(tile) { // and America/Vancouver are the same. Use a time to determine the // abbreviation, in case two similar tz have slightly different // daylight savings schedule. - var abbr = moment.tz(Date.now(), tz)._z.abbrs[0]; + var abbr = DateTime.now().setZone(tz).toFormat('ZZZ'); votes.push(abbr); abbrs[abbr] = tz; } diff --git a/package.json b/package.json index 1093cad..51c9d72 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,7 @@ "@mapbox/tile-cover": "^3.0.2", "d3-queue": "^3.0.3", "mkdirp": "^0.5.1", - "moment": "^2.12.0", - "moment-timezone": "^0.5.5", + "luxon": "^3.5.0", "rimraf": "^2.5.4", "simple-statistics": "^2.3.0", "tile-cover": "^3.0.1" diff --git a/test/timespace.test.js b/test/timespace.test.js index d5a28a5..fd5cb11 100644 --- a/test/timespace.test.js +++ b/test/timespace.test.js @@ -1,6 +1,6 @@ var timezones = require('../lib/timezones.json'); var test = require('tap').test; -var moment = require('moment-timezone'); +const { DateTime } = require('luxon'); var ts = require('../'); var z = Object.keys(timezones)[0].split('/').map(Number)[2]; @@ -44,7 +44,7 @@ test('check zone', function(t) { var quadkey2 = '02301023'; if (z === 8) { - var expected = moment.tz(new Date(timestamp), 'America/Los_Angeles'); + var expected = DateTime.fromMillis(timestamp).setZone('America/Los_Angeles'); t.deepequal(ts.getFuzzyLocalTimeFromPoint(timestamp, point), expected); t.equal(ts.getFuzzyTimezoneFromTile(tile), 'America/Los_Angeles'); t.equal(ts.getFuzzyTimezoneFromQuadkey(quadkey), 'America/Los_Angeles');