Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中获得今天开始的unix时间戳?_Javascript_Date_Unix Timestamp - Fatal编程技术网

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

如何在javascript中获得今天开始的unix时间戳?,javascript,date,unix-timestamp,Javascript,Date,Unix Timestamp,我意识到当前时间戳可以通过以下方式生成 var timestamp = Math.round((new Date()).getTime() / 1000); 我想要的是当天开始时的时间戳。例如,当前时间戳大约是1314297250,我希望能够生成的是1314230400,这是今天的开始2011年8月25日 感谢您的帮助。另一种让一天开始的方法是: var now = new Date; // now now.setHours(0); // set hours to 0 now.setMi

我意识到当前时间戳可以通过以下方式生成

var timestamp = Math.round((new Date()).getTime() / 1000);
我想要的是当天开始时的时间戳。例如,当前时间戳大约是
1314297250
,我希望能够生成的是
1314230400
,这是今天的开始
2011年8月25日


感谢您的帮助。

另一种让一天开始的方法是:

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
var now = new Date();
var beginningOfDay = new Date(now.getTime() -
                     now.getHours() * 60 * 60 * 1000 -
                     now.getMinutes() * 60 * 1000 -
                     now.getSeconds() * 1000 -
                     now.getMilliseconds());

最干净、最快捷的方法是:

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

其中86400是一天中的秒数

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

var d = new Date();
var t = d - (d % 86400000);
上述示例的简化版本(当地时间


您可以在这里找到一些性能测试:

或者,您可以减去以毫秒为单位的天数的模,例如:

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

对于任何日期,都可以使用日期的ISO字符串(“yyyy-mm-dd”)轻松获取日期开始/结束的时间戳:

要获取今天的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();

如果毫秒设置为
0
,那么我认为
Math.floor
不会增加太多。我在看到另一个答案后添加了它,但没有考虑太多。@Xeon06:那么,你为什么不编辑你的答案并删除它,以免混淆其他人?:]毫秒总是
0
这样,所以
Math.floor
我认为是多余的。谢谢@Tim Down。其他答案似乎也不错,但正如zzzz指出的那样,这更简短、更甜蜜。看起来第三行应该是:
var timestamp=startOfDay.getTime()/1000
@AdamC.:这很好,但没有必要<代码>开始日期通过自动转换。另请参见。返回未定义。是否确实需要创建所有这些对象?你现在只需在
上设置小时、分钟和秒
@Cristian Vrabie:是的,你是对的。不知道我在想什么;谢谢。现在就走。设定时间(0,0,0,0);//h、m、s、MS看起来很干净,但不起作用。如果您在GMT+2,您将获得的时间为02:00:00
var d = new Date();
d.setHours(0,0,0,0);
var t = d / 1000;
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);
var day = 24*60*60*1000;
var start_of_today = Date.now() - Date.now() % day;
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();
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();
var now = new Date();
var startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate());
var timestamp = startOfDay.getTime() / 1000;