使用Javascript检索UTC时间戳

时间:2016-06-21 13:09:59

标签: javascript node.js

我有一个应用程序,我不关心时区,只需要UTC时间。这意味着我的时间戳需要与UTC时间匹配。

我的目标是获得当天的2个UTC时间戳。假设UTC时间 6月21日13:04:47

这段时间我想获得当天午夜 6月21日00:00:00 的时间戳和24小时后的时间戳 6月22日00:00:00 。这两次的时间戳是 1466467200000 1466553600000

这就是我目前正在做的事情:

    var today = new Date();
    var todayStart = new Date(Date.UTC(today.getUTCFullYear(), today.getUTCMonth(), today.getUTCDate(), 0, 0, 0));
    var todayEnd = new Date();
    todayEnd.setTime(todayStart.getTime() + (24 * 60 * 60 * 1000));

    console.log("start of the day: " + todayStart.getTime())
    console.log("end of the day: " + todayEnd.getTime());

这会返回正确的结果,但我想知道这是否可靠,是否是实现我想要的正确方法。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

你这样做的方式是有效的,应该是可靠的。如果我写了它,我会做的有点不同。

var start = new Date(),
  end;

// set midnight today
start.setUTCHours(0);
start.setUTCMinutes(0);
start.setUTCSeconds(0);
start.setUTCMilliseconds(0);

// set to midnight tomorrow
end = new Date(start);
end.setUTCDate(start.getUTCDate() + 1);

console.log("start of the day: " + start.getTime());
console.log("end of the day: " + end.getTime());

此代码将开始日期创建为当前日期/时间,然后将时间部分清零。然后24小时后得到的只是创建一个重复的Date并将日期递增1的问题。它确实需要更多的代码,但它使它明确你正在做什么,并可能更容易阅读和理解在将来维护代码时。

答案 1 :(得分:1)

我强烈建议不要使用本机Date对象。

结帐momentmoment-timezone - 它们涵盖了您开箱即用的所有用例:http://momentjs.com/

您可以这样做:moment().tz('Europe/Berlin').utc()