0

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

谢谢!

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

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

4 回答 4

2

您的方法是正确的,但是您有一个讨厌的错误,您将本地年份与 UTC 日期和月份混合在一起,在新年前后几个小时,具体取决于时区,当地和 UTC 年份是不同的,所以如果你用错了一年,你的结果将是一整年。

你的问题有两种解释。您想要基于本地时间的结果,因此任何给定时间的结果将取决于时区。或者您想要一个基于 UTC 时间的结果,无论时区如何,结果都是相同的,但有时对于某些用户来说,结果不是本地日期。

当地时间:

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

世界标准时间:

date = new Date()
start_date = Date.UTC(date.getUTCFullYear(),date.getUTCMonth(),date.getUTCDate()) / 1000
于 2013-04-10T17:45:32.777 回答
0

这些链接有一些很好的答案。我喜欢 epochconverter.com,它为我节省了许多小时的挫败感。答案的本质是使用 Javascript Date 对象来处理转换日期的所有麻烦。这通常是您在任何语言中都应该执行的操作。如果您手动进行日期操作,您将弄错

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

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

于 2013-04-10T13:18:45.570 回答
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();
于 2013-04-10T13:28:09.130 回答
-1

这就是我最终为其他看到这个问题的人所做的。

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

如果您发现任何原因这不起作用,请告诉我。

于 2013-04-10T14:19:35.943 回答