From 582c9dee20ebe7db2002cd65e6c05e66c3e25c68 Mon Sep 17 00:00:00 2001 From: Jannis R Date: Sat, 22 Sep 2018 19:22:27 +0200 Subject: [PATCH] speed up date+time parsing :zap: --- parse/date-time.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/parse/date-time.js b/parse/date-time.js index 63ea681a..ec1fd849 100644 --- a/parse/date-time.js +++ b/parse/date-time.js @@ -1,6 +1,8 @@ 'use strict' -const {DateTime} = require('luxon') +const {DateTime, IANAZone} = require('luxon') + +const timezones = new WeakMap() const parseDateTime = (profile, date, time) => { const pDate = [date.substr(-8, 4), date.substr(-4, 2), date.substr(-2, 2)] @@ -15,9 +17,16 @@ const parseDateTime = (profile, date, time) => { const offset = time.length > 6 ? parseInt(time.slice(0, -6)) : 0 + let timezone + if (timezones.has(profile)) timezone = timezones.get(profile) + else { + timezone = new IANAZone(profile.timezone) + timezones.set(profile, timezone) + } + const dt = DateTime.fromISO(pDate.join('-') + 'T' + pTime.join(':'), { locale: profile.locale, - zone: profile.timezone + zone: timezone }) return offset > 0 ? dt.plus({days: offset}) : dt }