将JavaScriptdate初始化为午夜的最佳方法是什么?
获取新Date()的实例但设置午夜时间的最简单方法是什么?
setHours
方法可以setHours
可选的minutes
, seconds
和ms
参数,例如:
var d = new Date(); d.setHours(0,0,0,0);
这会将时间设置为您当前时区的 00:00:00.000
,如果您希望以UTC时间工作,则可以使用setUTCHours
方法。
只是想澄清,从接受的答案片段给出了最近的午夜过去 :
var d = new Date(); d.setHours(0,0,0,0); // last midnight
如果你想在将来获得最近的午夜 ,使用下面的代码:
var d = new Date(); d.setHours(24,0,0,0); // next midnignt
只是在这里添加这个,因为我登陆这个页面寻找如何做到这一点在moment.js和其他人也可以做。
[理由:在这个页面的其他地方已经出现了“时刻”这个词,所以search引擎直接在这里,而且moment.js是足够普遍的,足以保证被覆盖,在其他date相关的SO问题中经常提到]
所以,在2.0.0及以上版本中:
date.startOf('day');
对于早期版本:
date.sod();
文档:
对象configuration的一行代码:
new Date(new Date().setHours(0,0,0,0));
创build元素时:
dateFieldConfig = { name: "mydate", value: new Date( new Date(). setHours( 0, 0, 0, 0)), }
在@ Dan的例子中增加了用处,我有必要find下一个午夜或午夜。
var d = new Date(); if(d.getHours() < 12) { d.setHours(12,0,0,0); // next midnight/midday is midday } else { d.setHours(24,0,0,0); // next midnight/midday is midnight }
这使我可以为一个事件设置一个频率上限,只允许在上午和下午对我的网站访问者进行一次。 捕获的date被用来设置cookie的到期date。
如果以date计算,夏季常常会比午夜(CEST)多一小时或一小时。 当date返回时,这会导致1天的差异。 所以date必须轮到最近的午夜。 所以代码将是(这样jamisOn):
var d = new Date(); if(d.getHours() < 12) { d.setHours(0,0,0,0); // previous midnight day } else { d.setHours(24,0,0,0); // next midnight day }
你可以使用
new Date().setUTCHours(0,0,0,0)
如果你只需要这个值一次。
如果你的项目中已经有d3.js作为依赖,或者不介意, d3-time ( d3.js库是v4.0.0的模块 )已经得到间隔 。
将date设置为“默认”值时,它们可能会有用,例如午夜,0.00秒,本月的第一天等。
var d = new Date(); // Wed Aug 02 2017 15:01:07 GMT+0200 (CEST) d3.timeHour(d) // Wed Aug 02 2017 00:00:00 GMT+0200 (CEST) d3.timeMonth(d) // Tue Aug 01 2017 00:00:00 GMT+0200 (CEST)
var a = new Array(); var b = new Array(); var c = new Array(); var date = new Date().toJSON(); a = date.split("T"); a = a[0]; b = a.split("-"); var currentDate = new Date(b[0],b[1] , b[2] -29 ,-19,30,0).toJSON(); c = currentDate.split("."); var newDate = c[0]; console.log(newDate);