Мне дана строка, представляющая время, и идентификатор часового пояса.Мне нужно определить, происходит ли рассматриваемое время в течение следующих получаса, но компьютер, на котором я работаю, находится в другом часовом поясе, чем тот, где была захвачена строка.Небольшое примечание: все в порядке (все еще происходит скоро === верно), если событие произошло в прошлом).Просто пытаюсь отличить вещи, которые произойдут более чем на полчаса в будущем, от остальных.
Кажется, это должно быть просто, но я ничего не могу с этим поделать.
const moment = require('moment-timezone')
const hm = s => moment(s).format('HH:mm')
const happensSoon = (then, timezoneId) => {
console.log(`then:`, then) // 2018-10-04T16:39:52-07:00
console.log(`timezoneId:`, timezoneId) // America/New_York
const localNow = moment()
.clone()
.tz(timezoneId)
const localThen = moment(then)
.clone()
.tz(timezoneId)
const diff = localThen.diff(localNow, 'minutes')
console.log(`localThen:`, hm(localThen)) // 19:39
console.log(`localNow:`, hm(localNow)) // 16:24
console.log(`then:`, hm(then)) // 16:39
console.log(`diff:`, diff) // 194
return diff <= 30
}
Работает в часовом поясе "Америка / Лос-Анджелес".Моя «местная» предназначена для представления нью-йоркского времени.Итак, 16:39 - это входное значение для then
, и я ожидаю, что сравнение будет примерно в это время (О, я запускаю это примерно в 13:20 по местному времени разработчика).Итак, в основном, в приведенном выше коде я хочу сравнить 16:39 с 16:20, большие яблоки с большими яблоками.Я не хочу взломать мой путь в это;Я хочу решение, которое я понимаю.Спасибо!