我正在使用时区时区库来构建一个需要相对于各种时区的UI。
我正在接受一个时区的输入,即" America / Chicago"并且需要在GMT中获得一天的开始。
例如,如果今天是芝加哥时间3月27日上午9点(格林尼治标准时间下午2点),我需要在3月27日凌晨00:00的时间段内获取日期。
我正在使用moment.tz("America/Chicago").startOf('day')
,但我一直在Tue Mar 27 2018 01:00:00 GMT-0400 (EDT)
。知道怎么做吗?
由于
答案 0 :(得分:2)
// This part you are already doing correctly.
// You get back a Moment object representing the start of the current day in Chicago:
var m = moment.tz("America/Chicago").startOf('day');
我需要在纪元秒中获取日期
// Ok, so simply now get the associated Unix Time
var timestamp = m.unix();
另请注意,正确的术语是“Unix Time”,而不是“epoch seconds” 请参阅我的博文:"Please don't call it Epoch Time"。
...但我不断获得
Tue Mar 27 2018 01:00:00 GMT-0400 (EDT)
您可能正在查看_d
或Date
对象,或者更确切地说是一个对象的字符串表示。别。有关详细信息,请参阅this Moment.js documentation。
根据你的评论:
我需要在特定时区拍摄当前时间。然后我需要将该时间转换为GMT中的相应日期。最后,我需要获得GMT日的午夜纪元时间戳。
这与你最初的要求有点不同,但它会是这样的:
var timestamp = moment.utc().startOf('day').unix();
请注意,此操作涉及另一个时区没有任何意义。从逻辑上讲,当要求“现在在时区A转换为时区B”时,它与要求“现在在时区B中”相同。换句话说,即使存在时区,您也会获得相同的值:
var timestamp = moment.tz('America/Chicago').utc().startOf('day').unix();
所以你最好离开时区。