프로그래밍 언어/HTML,CSS,JS

Moment js 날짜 시간 비교

Rateye 2021. 8. 27. 16:35
728x90
반응형
질문 : 순간 js 날짜 시간 비교

날짜 시간 형식을 지정하기 위해 moment.js를 사용하고 있으며 여기에는 두 개의 날짜 값이 있으며 한 날짜가 다른 날짜보다 클 때 특정 기능을 얻고 싶습니다. 대부분의 문서를 읽었지만이를 달성하는 기능을 찾지 못했습니다. 거기있을 거라는 걸 알아요.

이것은 내 코드입니다.

var date_time = 2013-03-24 + 'T' + 10:15:20:12 + 'Z'
var d = moment(date_time).tz('UTC'); // first date 

var now = new Date(),
    dnow = moment(now).tz('UTC'),
    snow = dnow.minute() % 15,
    diffnow = 15 - snow,
    tonow = moment(dnow).add('minute', diffnow),
    ahead30now = moment(tonow).add('minute', 30);

if (d > ahead30now) {
    // allow input time
    console.log('UTC TIME DB', d.format());
} else {

}

편집하다

var date_time = req.body.date + 'T' + req.body.time + req.body.timezone; // 2014-03-24T01:15:000
var utc_input_time = moment(date_time).utc(); // 2014-03-24T01:15:000
console.log('utc converted date_time', moment(date_time).utc().format("YYYY-MM-DDTHH:mm:SSS"));
var isafter = moment(utc_input_time).isAfter(moment('2014-03-24T01:14:000')); // true
if(isafter === true){
    console.log('is after true');
} else {
    console.log('is after is false');
}

여기에서 두 날짜를 비교합니다. 즉 2014-03-24T01:15:000 > 2014-03-24T01:14:000 , 첫 번째 날짜가 두 번째 날짜보다 크지 만 항상 else 조건으로 이동합니다. 왜 그런지 모르겠어요?

답변

나는 당신이 쿼리 함수 , isBefore , isSameisAfter 찾고 있다고 믿습니다.

그러나 정확히 무엇을 시도하고 있는지 말하기는 약간 어렵습니다. 아마도 입력 시간과 현재 시간의 차이를 찾고 계십니까? 그렇다면 차이 함수 diff 고려하십시오. 예를 들면 :

moment().diff(date_time, 'minutes')

기타 몇 가지 :

  • 첫 번째 줄에 오류가 있습니다.
    var date_time = 2013-03-24 + 'T' + 10:15:20:12 + 'Z'
    그것은 작동하지 않을 것입니다. 나는 당신이 의미했다고 생각합니다.
      var date_time = '2013-03-24' + 'T' + '10:15:20:12' + 'Z';
    물론 다음과 같이 할 수도 있습니다.
    var date_time = '2013-03-24T10:15:20:12Z';
  • .tz('UTC') 잘못 사용하고 있습니다. .tzmoment-timezone에 속합니다. America/Los_Angeles 와 같은 다른 시간대로 작업하지 않는 한이를 사용할 필요가 없습니다. 값을 UTC로 구문 분석하려면 다음을 사용하십시오.
      moment.utc(theStringToParse)
    또는 로컬 값을 구문 분석하고 이를 UTC로 변환하려면 다음을 사용하십시오.
    moment(theStringToParse).utc()
    아니면 전혀 필요하지 않을 수도 있습니다. 입력 값이 UTC로되어 있다고해서 함수 전체에서 UTC로 작업해야한다는 의미는 아닙니다.
  • moment(new Date()) 의해 "지금"인스턴스를 얻는 것 같습니다. moment() 사용할 수 있습니다.

 

 

업데이트됨

편집 내용에 따라 다음과 같이 할 수 있다고 생각합니다.

var date_time = req.body.date + 'T' + req.body.time + 'Z';
var isafter = moment(date_time).isAfter('2014-03-24T01:14:00Z');

또는 필드가 올바른 형식인지 확인하려는 경우 :

var m = moment.utc(req.body.date + ' ' + req.body.time, "YYYY-MM-DD  HH:mm:ss");
var isvalid = m.isValid();
var isafter = m.isAfter('2014-03-24T01:14:00Z');
출처 : https://stackoverflow.com/questions/22600856/moment-js-date-time-comparison
728x90
반응형