speed up date+time parsing

This commit is contained in:
Jannis R 2018-09-22 19:22:27 +02:00
parent af29210c07
commit 582c9dee20
No known key found for this signature in database
GPG key ID: 0FE83946296A88A5

View file

@ -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
}