JS : 날짜가 1 시간 이내인지 확인하세요?


97

날짜가 1 시간 이내인지 확인하는 방법이 있나요?

이 같은:

<script>
// old date
var olddate = new Date("February 9, 2012, 12:15");

// current date
var currentdate = new Date();

if (olddate >= currentdate - 1 hour) {
    alert("newer than 1 hour");
else {
    alert("older than 1 hour");
}
</script>

또한 다른 질문-날짜에 시간을 추가하는 방법이 있습니까?

이렇게 :

<script>
var olddate = new Date("February 9, 2012, 12:15") + 15 HOURS; // output: February 10, 2012, 3:15
</script>

답변:


159

밝히다

var ONE_HOUR = 60 * 60 * 1000; /* ms */

그럼 당신은 할 수 있습니다

((new Date) - myDate) < ONE_HOUR

데이트에서 한 시간을 얻으려면

new Date(myDate.getTime() + ONE_HOUR)                       

시간 이전의 날짜도 허용되지 않습니까? (즉, 음의 차이)
information_interchange

1
@information_interchange, 예. n 시간 전이 미래의 -n 시간과 같으면 모든 미래 날짜는 1 시간 미만입니다.
Mike Samuel

55

ES6 구문 사용 :

const lessThanOneHourAgo = (date) => {
    const HOUR = 1000 * 60 * 60;
    const anHourAgo = Date.now() - HOUR;

    return date > anHourAgo;
}

은 Using 순간의 라이브러리를 :

const lessThanOneHourAgo = (date) => {
    return moment(date).isAfter(moment().subtract(1, 'hours'));
}

Moment를 사용한 속기 구문 :

const lessThanOneHourAgo = (date) => moment(date).isAfter(moment().subtract(1, 'hours'));

이것은 dayjs 에서도 작동합니다 . const lessThanOneHourAgo = (date) => { return dayjs(date).isAfter(dayjs().subtract(1, 'hours')); };
turrican_34 nov.

이것은 내가 필요한 것에 매우 가깝습니다. moreThanXHours 전 이었으므로 isAfter 대신 isBefore를 추가했습니다!
Urasquirrel

9

순간 라이브러리는 정말 도움이 표현할 수 있습니다. 요령은 날짜를 취하고, 시간을 추가하고, 지금 이전인지 이후인지 확인하는 것입니다.

  lastSeenAgoLabel: function() {
    var d = this.lastLogin();
    if (! moment(d).isValid()) return 'danger';  // danger if not a date.
    if (moment(d).add(10, 'minutes').isBefore(/*now*/)) return 'danger'; // danger if older than 10 mins
    if (moment(d).add(5,  'minutes').isBefore(/*now*/)) return 'warning'; // warning if older than 5mins
    return 'success';  // Looks good!
  },

2
//for adding hours to a date
Date.prototype.addHours= function(hrs){
    this.setHours(this.getHours()+hrs);
    return this;
}

다음과 같이 함수를 호출하십시오.

//test alert(new Date().addHours(4));

2

이 경우 순간을 사용하는 것이 훨씬 쉬울 것입니다.

    let hours = moment().diff(moment(yourDateString), 'hours');

1,2,5,0etc와 같은 정수 값을 제공하므로 다음과 같이 쉽게 조건 검사를 사용할 수 있습니다.

if(hours < 1) {

또한 한 가지 더는 다음 구문을 사용하여 이러한 종류의 결과를 얻기 위해 시간 차이의 더 정확한 결과 (1.2,1.5,0.7 등의 소수)를 얻을 수 있다는 것입니다.

let hours = moment().diff(moment(yourDateString), 'hours', true);

추가 문의 사항이 있으면 알려주세요.


0

다음과 같이 할 수 있습니다.

  1. 먼저 두 날짜의 차이, 즉 밀리 초를 찾습니다.
  2. 밀리 초를 분으로 변환
  3. 분이 60 미만이면 날짜가 시간이 아닌 시간 내에 있음을 의미합니다.
var date = new Date("2020-07-12 11:30:10");
var now = new Date();
var diffInMS = now - date;
var msInHour = Math.floor(diffInMS/1000/60);
if (msInHour < 60) {
    console.log('Within hour');
} else {
    console.log('Not within the hour');
}

-2

// 다음을 시도해보십시오 : // 두 날짜를 비교하려면 :

<Script Language=Javascript>
function CompareDates() 
{ 
    var str1 = document.getElementById("Fromdate").value;
    var str2 = document.getElementById("Todate").value;
    var dt1  = parseInt(str1.substring(0,2),10); 
    var mon1 = parseInt(str1.substring(3,5),10);
    var yr1  = parseInt(str1.substring(6,10),10); 
    var dt2  = parseInt(str2.substring(0,2),10); 
    var mon2 = parseInt(str2.substring(3,5),10); 
    var yr2  = parseInt(str2.substring(6,10),10); 
    var date1 = new Date(yr1, mon1, dt1); 
    var date2 = new Date(yr2, mon2, dt2); 

    if(date2 < date1)
    {
        alert("To date cannot be greater than from date");
        return false; 
    } 
    else 
    { 
        alert("Submitting ...");
    } 
} 

</Script>

4 u가 작동하기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.