【发布时间】:2020-10-13 11:34:48
【问题描述】:
我可能在这里做一些愚蠢的事情。但本质上,现在里斯本的时间是下午 12:27
但以下返回 14:27(欧盟中部时间)
const time = moment.tz("Europe/Lisbon")
const timeZone = "Europe/Lisbon"
const format = "'HH[:]mm'"
const startMoment = moment.tz(item.startTime, format, timeZone);
const endMoment = moment(item.endTime, format, timeZone);
return time.isBetween(startMoment, endMoment);
我尝试了几种组合,但每次都得到错误的答案。例如,如果我将 timeZone 设置为“Europe/Warsaw”,它会返回 15:27 而应该是 13:27。
编辑:const currentTime = moment().tz("Europe/London").format() 返回伦敦的正确时间。但是,返回语句moment(currentTime).isBetween(startMoment, endMoment) 仍将“moment(correntTime)”读取为本地时间。
【问题讨论】:
-
那么,item.startTime 和 item.endTime 是常规的
Date对象吗?无论如何,该代码如何返回时间......它不应该返回一个布尔值.......isBetween听起来它返回 true 或 false -
item.startTime 和 item.endTime 是否在给定的时区右侧(例如欧洲/里斯本)?
-
const endMoment = moment(item.endTime, format, timeZone);.... 那里缺少.tz? -
@JaromadaX 没有。对不起,“item.endtime”已经是格式化的时间,不需要转换。它只是返回不能正常工作并且 time.isBetween = 错误时间。
标签: javascript reactjs momentjs moment-timezone