Javascript:如何用毫秒计算一天的开始?

时间:2012-06-22 02:43:35

标签: javascript date time milliseconds

我想知道从一天开始的时间给出几天毫秒。

所以说我给了这个:1340323100024就像是6/21/2012的中午。现在我想要从一天开始的毫秒,这将是1340262000000(至少我认为这是它应该是什么。)

如何从1340323100024获得1340262000000?

我试过

Math.floor(1340323100024/86400000) * 86400000 

但这给了我1340236800000,如果我用它创建一个日期对象,就说它是第20个。

我知道我可以从1340323100024创建一个日期对象,然后获取月,年和日,创建一个新对象,这将给我1340262000000,但我发现它很荒谬我无法弄清楚这么简单的东西。

任何帮助将不胜感激。

不过,如果它有任何不同,我在javascript中这样做。

3 个答案:

答案 0 :(得分:6)

我同意Thilo(本地化为时区),但我可能会像这样解决它:

// Original: Thu Jun 21 2012 19:58:20 GMT-0400 (Eastern Daylight Time)
var ms = 1340323100024;
var msPerDay = 86400 * 1000;
var beginning = ms - (ms % msPerDay);
// Result:    Wed Jun 20 2012 20:00:00 GMT-0400 (Eastern Daylight Time)

或者,如果您愿意:

Number.prototype.StartOfDayMilliseconds = function(){
  return this - (this % (86400 * 1000));
}

var ms = 1340323100024;
alert(ms.StartOfDayMilliseconds());

修改

如果您特别关注时区,可以使用:

// Original: Thu Jun 21 2012 19:58:20 GMT-0400 (Eastern Daylight Time)
var ms = 1340323100024;
var msPerDay = 86400 * 1000;
var beginning = ms - (ms % msPerDay);
    beginning += ((new Date).getTimezoneOffset() * 60 * 1000);
// Result:    Thu Jun 21 2012 00:00:00 GMT-0400 (Eastern Daylight Time)

请注意,现在已删除偏移量,因此前一天晚上8点将转到时间戳上实际日期的午夜。您也可以(取决于实施)在您开始模拟之前或之后进行添加 - 您的偏好。

答案 1 :(得分:1)

var d = new Date();
var date = d.toISOString().split("T")[0];
var date_ms = new Date(date).getTime();

或一行答案

console.log(new Date(new Date().toISOString().split("T")[0]).getTime());

答案 2 :(得分:-3)

实际上,要获得GMT + 5当天开始以来的毫秒数,应该WHERE ((Year([New Referrals].[Date of Referral])