11

タイムスタンプを持つSQLからデータを取得していますが、それらが同じ日かどうかを確認したい....

ループでは、前のループのタイムスタンプが現在のループのタイムスタンプと同じであることを確認しようとしています......私はこのようなことを試みています.....

$.each(data, function(key, value) {
   if( new Date([value.startTime] * 1000) === previousdate){
       console.log("*** Same day ***");
    }
    previousdate = new Date([value.startTime] * 1000);
}

しかし、それらは同じ日ですが、時間は異なります......両方が同じ日であるかどうかを確認したいだけです.....比較する前にそれらをトリミングできるので、うまく機能します... .しかし、これを行う他の効果的な方法はありますか.....

乾杯...

4

4 に答える 4

20

日付文字列を確認することもできます。

var isSameDay = function(date, otherDate) {
  return date.toDateString() === otherDate.toDateString();
};

インラインで行うのはかなり簡単なので、これは素晴らしいことです。

于 2014-08-04T20:10:37.860 に答える
15

同じ日なのか同じ日なのかはわかりません。同じ日の話をしているのですが、何をしているのかから、同じ日なのか確認したいようです。同じ日付かどうかを確認する方法は次のとおりです。

$.each(data, function(key, value) {
    var current = new Date(value.startTime * 1000).setHours(0, 0, 0, 0);
    var previous = new Date(previousDate).setHours(0, 0, 0, 0);

    if(current === previous){
        console.log("*** Same day ***");
    }
    previousdate = new Date([value.startTime] * 1000);
})

基本的に、新しいDateオブジェクトを作成し、すべての時間値(時、分、秒、およびミリ秒)をリセットします。

このチェックにのみを使用している場合は、次のpreviousdateように簡略化できます。

$.each(data, function(key, value) {
    var current = new Date(value.startTime * 1000).setHours(0, 0, 0, 0);

    if(current === previousdate){
        console.log("*** Same day ***");
    }

    previousdate = current;
});

操作に加えて* 1000、それはAFAIKの最も簡単で安全な方法です。エンジンにすべての計算を実行させます。すべての日が24時間で作成されるわけではなく、夏時間が表示されます。また、すべての分が60秒で作成されるわけではありません。うるう秒が表示されます。したがって、それを想定して操作を行うのは安全ではありません。

もちろん、一部のエンジンはうるう秒にも対応できませんでしたが、少なくとも夏時間に関しては、それでも優れています。

于 2012-12-07T13:53:11.550 に答える
3

UTC 日付のみを気にするので、これは簡単なはずです。タイムスタンプは秒数であるため、1 日の秒数で割ってから値を下げると、1970 年 1 月 1 日からの日数が得られます。両方の値が 1970 年からの同じ日数である場合、それからあなたは一致しています。

$.each(data, function(key, value) {
    var date, previous;
    date = Math.floor(value.startTime / 60 / 60 / 24);
    if (date === previous){
       console.log("*** Same day ***");
    }
    previous = date;
}
于 2012-12-07T13:10:26.323 に答える