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

Kho*_*hon 4 javascript time date milliseconds

我想弄清楚从一天开始的时间给出几天毫秒.

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

我如何从1340323100024获得1340262000000?

我试过了

Math.floor(1340323100024/86400000) * 86400000 
Run Code Online (Sandbox Code Playgroud)

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

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

任何帮助,将不胜感激.

顺便说一句,我在javascript中这样做,如果它有任何区别.

Bra*_*tie 7

我同意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)
Run Code Online (Sandbox Code Playgroud)

或者,如果您愿意:

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

var ms = 1340323100024;
alert(ms.StartOfDayMilliseconds());
Run Code Online (Sandbox Code Playgroud)

编辑

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

// 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)
Run Code Online (Sandbox Code Playgroud)

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