回答:
この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 midnight
オブジェクト構成のワンライナー:
new Date(new Date().setHours(0,0,0,0));
要素を作成する場合:
dateFieldConfig = {
name: "mydate",
value: new Date(new Date().setHours(0, 0, 0, 0)),
}
これをここに追加するのは、moment.jsでこれを行う方法を探してこのページにアクセスしたためです。
[ 理由:「モーメント」という単語はすでにこのページの他の場所に表示されているため、検索エンジンがここに直接表示されます。また、moment.jsは、日付に関連する他のSOの質問でどれだけ頻繁に言及されるかについて説明するのに十分なほど広く普及しています。
したがって、バージョン2.0.0以降では:
date.startOf('day');
以前のバージョンの場合:
date.sod();
ドキュメント:
moment(DATE_OBJECT).startOf('day').toDate();
あなたはおそらく使用できます
new Date().setUTCHours(0,0,0,0)
一度だけ値が必要な場合。
@Danの例に有用性を追加すると、次の正午または真夜中を見つける必要がありました。
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
}
これにより、イベントのフリークエンシーキャップを設定できるようになりました。これは、サイトにアクセスしたすべての訪問者が午前と午後に1回だけ発生できるようにするものです。取得した日付は、Cookieの有効期限を設定するために使用されました。
日付を使用して計算すると、夏時間が真夜中(CEST)よりも1時間多くまたは1時間短くなります。これにより、日付が戻るときに1日の差が生じます。したがって、日付は最も近い真夜中に丸める必要があります。したがって、コードは次のようになります(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
}
これを処理するためにいくつかのプロトタイプを作成しました。
// This is a safety check to make sure the prototype is not already defined.
Function.prototype.method = function (name, func) {
if (!this.prototype[name]) {
this.prototype[name] = func;
return this;
}
};
Date.method('endOfDay', function () {
var date = new Date(this);
date.setHours(23, 59, 59, 999);
return date;
});
Date.method('startOfDay', function () {
var date = new Date(this);
date.setHours(0, 0, 0, 0);
return date;
});
安全チェックが必要ない場合は、単に使用できます
Date.prototype.startOfDay = function(){
/*Method body here*/
};
使用例:
var date = new Date($.now()); // $.now() requires jQuery
console.log('startOfDay: ' + date.startOfDay());
console.log('endOfDay: ' + date.endOfDay());
プロジェクトの依存関係としてすでにd3.jsがある場合、またはそれを取り込んでも構わない場合は、d3-time(d3.jsライブラリはv4.0.0以降はモジュール化されています)にIntervalsがあります。
日付を「デフォルト」の値に設定する場合に役立つことがあります。たとえば、真夜中、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)