我有一个应用程序,我不关心时区,只需要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());
这会返回正确的结果,但我想知道这是否可靠,是否是实现我想要的正确方法。谢谢你的帮助。
答案 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对象。
结帐moment
和moment-timezone
- 它们涵盖了您开箱即用的所有用例:http://momentjs.com/
您可以这样做:moment().tz('Europe/Berlin').utc()