Rob*_*obG 33
一堆答案,所以这里另一个:
var d = new Date(), e = new Date(d);
var msSinceMidnight = e - d.setHours(0,0,0,0);
Run Code Online (Sandbox Code Playgroud)
作为一个功能:
function getMsSinceMidnight(d) {
var e = new Date(d);
return d - e.setHours(0,0,0,0);
}
alert(getMsSinceMidnight(new Date()));
Run Code Online (Sandbox Code Playgroud)
Nie*_*sol 29
使用当前日/月/年创建新日期,并获得差异.
var now = new Date(),
then = new Date(
now.getFullYear(),
now.getMonth(),
now.getDate(),
0,0,0),
diff = now.getTime() - then.getTime(); // difference in milliseconds
Run Code Online (Sandbox Code Playgroud)
除了RobG(推荐答案),Kolink和Lai之外的许多答案在这里都是错误的
让我们仔细观察吧
第一个错误
由于麻辣过度,如果在最近的午夜应用夏令时修正,我们会得到不正确的值.我们调试一下:
10 * 60 * 60 * 1000ms第二个错误
肯尼贝克的回答:
正如RobG写的那样,如果你得到两次系统时间,时钟可以打勾.我们甚至有时会出现在不同的日期.你可以循环重现这个:
for (var i = 0; true; i++) {
if ((new Date()).getTime() - (new Date()).getTime()) {
alert(i); // console.log(i); // for me it's about a 1000
break;
}
}
Run Code Online (Sandbox Code Playgroud)
第三是你可能遇到的个人陷阱
请考虑以下代码:
var d = new Date(),
msSinceMidnight = d - d.setHours(0,0,0,0);
Run Code Online (Sandbox Code Playgroud)
msSinceMidnight总是0在减法操作之前计算期间改变对象
最后,这段代码有效:
var d = new Date(),
msSinceMidnight = d.getTime() - d.setHours(0,0,0,0);
Run Code Online (Sandbox Code Playgroud)
如果您不介意创建两个日期,则编写起来更简单。
var msSinceMidnight= new Date()-new Date().setHours(0,0,0,0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17827 次 |
| 最近记录: |