diff --git a/format/date.js b/format/date.js index 45091a34..983ab952 100644 --- a/format/date.js +++ b/format/date.js @@ -1,11 +1,21 @@ 'use strict' -const {DateTime} = require('luxon') +const {DateTime, IANAZone} = require('luxon') +const timezones = new WeakMap() + +// todo: change to `(profile) => (when) => {}` const formatDate = (profile, when) => { + let timezone + if (timezones.has(profile)) timezone = timezones.get(profile) + else { + timezone = new IANAZone(profile.timezone) + timezones.set(profile, timezone) + } + return DateTime.fromMillis(+when, { locale: profile.locale, - zone: profile.timezone + zone: timezone }).toFormat('yyyyMMdd') } diff --git a/format/time.js b/format/time.js index d16b2e8c..c2474ee9 100644 --- a/format/time.js +++ b/format/time.js @@ -1,11 +1,21 @@ 'use strict' -const {DateTime} = require('luxon') +const {DateTime, IANAZone} = require('luxon') +const timezones = new WeakMap() + +// todo: change to `(profile) => (when) => {}` const formatTime = (profile, when) => { + let timezone + if (timezones.has(profile)) timezone = timezones.get(profile) + else { + timezone = new IANAZone(profile.timezone) + timezones.set(profile, timezone) + } + return DateTime.fromMillis(+when, { locale: profile.locale, - zone: profile.timezone + zone: timezone }).toFormat('HHmmss') } diff --git a/parse/date-time.js b/parse/date-time.js index ec1fd849..9c777ad4 100644 --- a/parse/date-time.js +++ b/parse/date-time.js @@ -4,6 +4,7 @@ const {DateTime, IANAZone} = require('luxon') const timezones = new WeakMap() +// todo: change to `(profile) => (date, time) => {}` const parseDateTime = (profile, date, time) => { const pDate = [date.substr(-8, 4), date.substr(-4, 2), date.substr(-2, 2)] if (!pDate[0] || !pDate[1] || !pDate[2]) {