如何将当前时间转换为GMT?

时间:2013-04-10 13:13:43

标签: javascript node.js

我需要获取当天的00:00:00 AM GMT(上午12点)的值,然后将其转换为unix时间。我将如何/应该在javascript中执行此操作?是否存在比服务器时间更可靠的外部数据源?我将在服务器上的节点中执行此操作。

谢谢!

编辑:这就是我所做的。你觉得这有什么问题吗?再次感谢!

date = new Date()
start_date = Date.UTC(date.getFullYear(),date.getUTCMonth(),date.getUTCDate()) / 1000

4 个答案:

答案 0 :(得分:2)

你的方法是正确的,但你有一个讨厌的错误,你在当地年份与UTC日期和月份混合,在新的一年左右几个小时,根据时区,当地和UTC年份是不同的,所以如果你使用错误的一年,你的结果将整整一年。

您的问题有两种解释。要么基于本地时间需要结果,所以任何给定时间的结果都取决于时区。或者您希望基于UTC时间的结果无论时区是否相同,但有时对于某些用户而言,结果将不是本地日期。

当地时间:

date = new Date()
start_date = Date.UTC(date.getFullYear(),date.getMonth(),date.getDate()) / 1000

UTC:

date = new Date()
start_date = Date.UTC(date.getUTCFullYear(),date.getUTCMonth(),date.getUTCDate()) / 1000

答案 1 :(得分:0)

这些链接有一些很好的答案。我喜欢epochconverter.com它为我节省了数小时的挫折感。答案的本质是使用Javascript Date对象来处理转换日期的所有肮脏。这通常是你应该用任何语言做的。如果您正在手工操作日期操作,那么您将错误地

http://www.epochconverter.com/programming/#javascript

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date

答案 2 :(得分:0)

这是一个很好的起点:

var now = new Date();
var then = new Date(now.getFullYear(), now.getMonth(), now.getDate());
var epoch = then.getTime();

不确定您要对DST做什么,所以您需要查看: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset

编辑:允许不同的时区:

var off = now.getTimezoneOffset() * 60000; /* tz is in mins so multiply to ms */
var midnight = new Date(then.getTime() - off);
var epoch = midnight.getTime();

答案 3 :(得分:-1)

这就是我最后为其他任何看过这个问题的人所做的事情。

date = new Date()
start_date = Date.UTC(date.getFullYear(),date.getUTCMonth(),date.getUTCDate()) / 1000

如果您发现任何不合理的原因,请告诉我。