你如何在javascript中获得今天开始的unix时间戳?

时间:2011-08-25 18:38:29

标签: javascript date unix-timestamp

我意识到可以使用以下内容生成当前时间戳...

var timestamp = Math.round((new Date()).getTime() / 1000);

我想要的是当天开头的时间戳。例如,当前时间戳大致为1314297250,我希望能够生成1314230400,这是今天August 25th 2011的开头。

感谢您的帮助。

10 个答案:

答案 0 :(得分:41)

var now = new Date();
var startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate());
var timestamp = startOfDay / 1000;

答案 1 :(得分:7)

嗯,最干净,最快捷的方法是:

long timestamp = 1314297250;
long beginOfDay = timestamp - (timestamp % 86400);

其中86400是一天中的秒数

答案 2 :(得分:3)

var now = new Date; // now

now.setHours(0);   // set hours to 0
now.setMinutes(0); // set minutes to 0
now.setSeconds(0); // set seconds to 0

var startOfDay = Math.floor(now / 1000); // divide by 1000, truncate milliseconds

答案 3 :(得分:3)

var d = new Date();
d.setHours(0);
d.setMinutes(0);
d.setSeconds(0);
d.setMilliseconds(0);
var t = d / 1000;

答案 4 :(得分:1)

获得当天开始的另一种选择如下:

var now = new Date();
var beginningOfDay = new Date(now.getTime() -
                     now.getHours() * 60 * 60 * 1000 -
                     now.getMinutes() * 60 * 1000 -
                     now.getSeconds() * 1000 -
                     now.getMilliseconds());

答案 5 :(得分:1)

Luis Fontes的解决方案返回 UTC时间,因此它可以是1小时(夏令时),与setHours解决方案不同。

var d = new Date();
var t = d - (d % 86400000);

以上示例的简化版本(当地时间)。

var d = new Date();
d.setHours(0,0,0,0);
var t = d / 1000;

您可以在这里找到一些性能测试:http://jsperf.com/calc-start-of-day

答案 6 :(得分:1)

或者你可以减去以毫秒为单位的天长度的模数,例如

var day = 24*60*60*1000;
var start_of_today = Date.now() - Date.now() % day;

答案 7 :(得分:0)

var yoursystemday = new Date(new Date().getTime()-(120000*60+new Date().getTimezoneOffset()*60000));
yoursystemday = new Date();
var current_time_stamp = Math.round(yoursystemday.getTime()/1000);

答案 8 :(得分:0)

对于任何日期,使用日期的ISO字符串('yyyy-mm-dd')很容易获得日期开始/结束的时间戳:

var dateString = '2017-07-13';
var startDateTS = new Date(`${dateString}T00:00:00.000Z`).valueOf();
var endDateTS = new Date(`${dateString}T23:59:59.999Z`).valueOf();

要获取今天的ISO字符串,您将使用(new Date()).toISOString().substring(0, 10) 所以今天要获得TS:

var dateString = (new Date()).toISOString().substring(0, 10);
var startDateTS = new Date(`${dateString}T00:00:00.000Z`).valueOf();
var endDateTS = new Date(`${dateString}T23:59:59.999Z`).valueOf();

答案 9 :(得分:0)

var now = new Date();
var startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate());
var timestamp = startOfDay.getTime() / 1000;
相关问题