JS:日付が1時間以内かどうか確認してください。


96

日付が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>

回答:


156

定義する

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

その後、あなたはできる

((new Date) - myDate) < ONE_HOUR

日付から1時間を得るには、

new Date(myDate.getTime() + ONE_HOUR)                       

これは時間より前の日付も受け入れませんか?(つまり、負の微分)
information_interchange

1
@information_interchange、はい。n時間前が将来の-n時間と同じである場合、すべての将来の日付は1時間未満です。
マイクサミュエル

53

いくつかのES6構文を使用:

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

    return date > anHourAgo;
}

モーメントライブラリの使用:

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

これは私が必要としていたものにかなり近かった。これは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,0などの整数値が得られるので、次のような条件チェックを簡単に使用できます。

if(hours < 1) {

また、もう1つ、時間差のより正確な結果(1.2、1.5、0.7などの10進数)を取得して、次の構文を使用してこのような結果を得ることができます。

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

他にご不明な点がありましたらお知らせください


0

あなたは次のようにそれを行うことができます:

  1. 最初に2つの日付の差、つまりミリ秒単位の違いを見つけます
  2. ミリ秒を分に変換する
  3. 分が60未満の場合、日付は1時間以内であり、それ以外は1時間以内であることを意味します。
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

//これを試してください:// 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.