需要查看访问我页面的用户是否在太平洋标准时间上午8:00或下午16:00之间的支持时间,所以如果来自亚洲或其他时区的用户在这些时间之外访问该页面获得自定义标签,我可以进行为不涉及时区工作,但我遇到时区问题,以下代码总是返回true。任何想法如何实现这一目标?
import moment from 'moment';
import 'moment-timezone';
const timezone = 'America/Los_Angeles';
const supportStartTime = moment().tz(timezone).hours(8).minutes(0).seconds(0);
const supportEndsTime = moment().tz(timezone).hours(16).minutes(0).seconds(0);
const now = moment();
const isBetweenWorkingHours = now.isBetween(supportStartTime,supportEndsTime);
答案 0 :(得分:1)
似乎工作正常:
2016-11-06T08:00:00-08:00
2016-11-06T16:00:00-08:00
2016-11-06T10:00:00-05:00
false
2016-11-06T12:00:00-05:00
true
2016-11-06T15:22:48-08:00
true
产生:
console.log(moment().format());
console.log(moment().tz('EST').format());
console.log(moment().tz('UTC').format());
(我在太平洋时间,这就是为什么时区在最后一个项目上出现的原因。)
2016-11-06T16:24:53-08:00
2016-11-06T19:24:53-05:00
2016-11-07T00:24:53Z
产生
moment().format()
这些都是相同的"现在"。如果您在美国东部时间并且运行moment().format()
,您将获得附加时区的当前时间(第2行)。如果UTC中的某个人同时运行{{1}},那么他们现在就会#34;相对于他们自己的时区(第3行)。他们都是相同的"现在"因为它们是同时运行的,所以它们只有不同的局部表示。