使用Javascript:如何计算与毫秒的一天的开始?([removed] how to calcu

2019-09-18 09:13发布

我想从给定天毫秒一天的开始找出的时间。

所以说,我给这样的:1340323100024这就像正午的2012/6/21。 现在我想从一天的开始,这将是13402.62亿毫秒(至少我认为这就是它应该是。)

我如何得到1340323100024 13402.62亿?

我想这样做

Math.floor(1340323100024/86400000) * 86400000 

但是,让我1340236800000,而如果我创建一个日期对象了吧,它的20说。

我知道我可以从1340323100024创建一个日期对象,然后拿到一个月,一年,日期,创建一个新的对象,这将使我的13402.62亿,但我觉得可笑我想不通这么简单的东西。

任何帮助,将不胜感激。

顺便说一句,我在JavaScript,如果这有什么差别这样做。

Answer 1:

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

// 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点前一天变成了对时间戳的实际日期的午夜。 您还可以或许(取决于实现)做之前或模当天开始后加入 - 您的喜好。



Answer 2:

其实,这应该是(currTimeMilli - 18000000) % 864000000获得的毫秒数的那天起就为GMT + 5的开始。



文章来源: Javascript: how to calculate the beginning of a day with milliseconds?