mirror of
https://github.com/public-transport/db-vendo-client.git
synced 2025-02-23 07:09:35 +02:00
speed up date+time parsing ⚡
This commit is contained in:
parent
af29210c07
commit
582c9dee20
1 changed files with 11 additions and 2 deletions
|
@ -1,6 +1,8 @@
|
||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
const {DateTime} = require('luxon')
|
const {DateTime, IANAZone} = require('luxon')
|
||||||
|
|
||||||
|
const timezones = new WeakMap()
|
||||||
|
|
||||||
const parseDateTime = (profile, date, time) => {
|
const parseDateTime = (profile, date, time) => {
|
||||||
const pDate = [date.substr(-8, 4), date.substr(-4, 2), date.substr(-2, 2)]
|
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
|
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(':'), {
|
const dt = DateTime.fromISO(pDate.join('-') + 'T' + pTime.join(':'), {
|
||||||
locale: profile.locale,
|
locale: profile.locale,
|
||||||
zone: profile.timezone
|
zone: timezone
|
||||||
})
|
})
|
||||||
return offset > 0 ? dt.plus({days: offset}) : dt
|
return offset > 0 ? dt.plus({days: offset}) : dt
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue