Programing

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

lottogame 2020. 2. 23. 11:33
반응형

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
    }

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)

나는 이것을 위해 몇 가지 프로토 타입을 만들었습니다.

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

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

참고 URL : https://stackoverflow.com/questions/3894048/what-is-the-best-way-to-initialize-a-javascript-date-to-midnight



반응형