我需要获取当天的00:00:00 AM GMT
(上午12点)的值,然后将其转换为unix时间。我将如何/应该在javascript中执行此操作?是否存在比服务器时间更可靠的外部数据源?我将在服务器上的节点中执行此操作。
谢谢!
编辑:这就是我所做的。你觉得这有什么问题吗?再次感谢!date = new Date()
start_date = Date.UTC(date.getFullYear(),date.getUTCMonth(),date.getUTCDate()) / 1000
答案 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
如果您发现任何不合理的原因,请告诉我。