From 2a6b0dc507bd0940ee09b16e1f097499a5e78082 Mon Sep 17 00:00:00 2001 From: Jannis R Date: Mon, 24 Sep 2018 15:40:00 +0200 Subject: [PATCH] speed up date+time formatting :zap: --- format/date.js | 14 ++++++++++++-- format/time.js | 14 ++++++++++++-- parse/date-time.js | 1 + 3 files changed, 25 insertions(+), 4 deletions(-) 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]) {