답변:
setHours
방법은 선택이 걸릴 수 있습니다 minutes
, seconds
그리고 ms
예를 들어, 인수 :
var d = new Date();
d.setHours(0,0,0,0);
UTC 시간으로 작업하려면이 시간대00:00:00.000
를 사용 하여 현재 시간대 의 시간을 설정합니다 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 에서이 작업을 수행하는 방법을 찾고 있기 때문에 여기에 추가하면됩니다 .
[Rationale : "모멘트"라는 단어가 이미이 페이지의 다른 곳에 나타나므로 검색 엔진이 여기에 지시하고 moment.js 는 다른 날짜 관련 SO 질문에서 얼마나 자주 언급되는지에 대해 다루기 위해 충분히 널리 퍼져 있습니다.]
따라서 버전 2.0.0 이상에서 :
date.startOf('day');
이전 버전의 경우 :
date.sod();
문서 :
moment(DATE_OBJECT).startOf('day').toDate();
@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
}
이를 통해 이벤트에 대한 게재 빈도 설정을 할 수 있었으며 내 사이트 방문자는 아침에 한 번, 오후에 한 번만 발생할 수있었습니다. 캡처 된 날짜는 쿠키 만료를 설정하는 데 사용되었습니다.
여름철 날짜로 계산하면 자정 (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 시간 ( d3.js 라이브러리는 v4.0.0에서 모듈 식임 )에 Intervals가 있습니다.
날짜를 "기본"값 (예 : 자정, 0.00 초, 매월 1 일 등)으로 설정할 때 유용 할 수 있습니다.
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)