Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用moment.js timezone获取另一时区中的日极端值(但答案是UTC)_Javascript_Datetime_Timezone_Momentjs - Fatal编程技术网

Javascript 使用moment.js timezone获取另一时区中的日极端值(但答案是UTC)

Javascript 使用moment.js timezone获取另一时区中的日极端值(但答案是UTC),javascript,datetime,timezone,momentjs,Javascript,Datetime,Timezone,Momentjs,我想计算出某一天从午夜到午夜的极端值,那一天是相对于现在的天数,即相对于日期的天数。现在。。。但时区与UTC不同。但我希望午夜时间的答案以UTC时间为单位,以毫秒为单位,类似于Date.now的结果,这样我就可以将这些结果提供给期望UTC时间的API,以获得准确的数据时间范围。我尝试过使用,但却被卡住了。。。我找到了,但它在不同的时区不起作用。片刻可以让您相当轻松地做到这一点: function getUTCMidnightMillis(timezone, days_ago) { retur

我想计算出某一天从午夜到午夜的极端值,那一天是相对于现在的天数,即相对于日期的天数。现在。。。但时区与UTC不同。但我希望午夜时间的答案以UTC时间为单位,以毫秒为单位,类似于Date.now的结果,这样我就可以将这些结果提供给期望UTC时间的API,以获得准确的数据时间范围。我尝试过使用,但却被卡住了。。。我找到了,但它在不同的时区不起作用。

片刻可以让您相当轻松地做到这一点:

function getUTCMidnightMillis(timezone, days_ago) {
  return moment()               // Current time.
    .tz(timezone)               // Convert to desired timezone.
    .subtract(days_ago, 'days') // Go back x days.
    .startOf('day')             // Get start of day, aka Midnight!
    .utc()                      // Convert value into UTC.
    .valueOf()                  // Return milliseconds since unix epoch.
}

console.log("Midnight in Denver:", getUTCMidnightMillis("America/Denver", 0))
console.log("Midnight in New York:", getUTCMidnightMillis("America/New_York", 0))
它产生输出:

Midnight in Denver: 1594274400000
Midnight in New York: 1594267200000
事实上,您可以验证这是正确的:

new Date(1594274400000).toISOString()
// Produces: "2020-07-09T06:00:00.000Z"

2020年7月9日,我们在丹佛观测夏时制,使UTC偏移为-6小时。所以上面的时间戳6:00 UTC是丹佛午夜的同一时刻。

< P>我建议你考虑使用,这基本上是瞬间的替代。JS.

算法是在所需的代表性位置创建一个当前日期,减去所需的天数,然后设置为一天的开始,然后获得时间值,例如

设DateTime=luxon.DateTime; //为3天前在丹佛的00:00:00创建日期 让d=DateTime.local//创建一个日期 .setZone'America/Denver'//设置为Denver .减去{天:3}//减去3天 .startOf'day';//设置为一天的开始 //创建一天结束的日期 设e=d,结束“天”; //丹佛3天前在一天的开始和结束 console.log'Start of day:'+d.toISO+'\n时间值:'+d.ts; console.log'End of day:'+e.toISO+'\n时间值:'+e.ts;
你能分享一个例子吗?请注意,.utc部分似乎没有什么区别?@drmrbrewer是的,.utc没有做任何有用的事情。谢谢你提醒我注意Luxon。看起来和那个时刻很相似?哪里说Luxon本质上是moment.js的替代品?在玩了Luxon一段时间后,我发现它比moment更直观。特别是,当在时区之间移动时,我非常喜欢keepLocalTime选项。我现在找不到任何等价物,这正是我想要解决的另一个问题所需要的。