[javascript] JavaScript Date를 자정으로 초기화하는 가장 좋은 방법은 무엇입니까?

new Date () 인스턴스를 가져 와서 자정에 시간을 설정하는 가장 간단한 방법은 무엇입니까?



답변

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();

문서 :

http://momentjs.com/docs/#/manipulating/start-of/


답변

아마 사용할 수 있습니다

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
}

이를 통해 이벤트에 대한 게재 빈도 설정을 할 수 있었으며 내 사이트 방문자는 아침에 한 번, 오후에 한 번만 발생할 수있었습니다. 캡처 된 날짜는 쿠키 만료를 설정하는 데 사용되었습니다.


답변

여름철 날짜로 계산하면 자정 (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
    }