2011-08-03 36 views
1

特定の日付オブジェクトが当日と同じ日であるかどうかを確認したいと思います。以下は擬似コードです。javascript Today()function

// date is a Date object 
function (date) 
{ 
    if (date == Today()) 
     alert('How are you today?'); 
    else 
     alert('How were you last ' + date.toDateString() + '?'); 
} 

Today()関数を実装するにはどうすればよいですか?それは実際に関数である必要はありませんが、同等のソリューションはまったく同じようになります。ありがとう。

[編集] 私は言及を忘れてしまった。現在の時刻(現時点)は現地時間であり、比較対象の日付オブジェクトはサーバー時間であり、世界のどこにでも置くことができます。

答えて

7

あなたはちょうどあなたなしnew Date()に渡している日付文字列のtoDateString() Sを比較することができます:あなたは、おそらく次のサンプルごとに、getMonth()getDate()getFullYear()と平等のための個々のフィールドを比較することになるでしょうそれに渡されたパラメータ(今日はデフォルトになります)。

// date is a Date object 
function alertDateGreeting(date) 
{ 
    if (date.toDateString() == (new Date()).toDateString()) 
     alert('How are you today?'); 
    else 
     alert('How were you last ' + date.toDateString() + '?'); 
} 
+0

私の最初の本能ではなく非常にエレガントです。 +1 – Domenic

+0

それは私が推測するよりも単純ではありません。しかし、現在の時間が現地時間であり、もう1つが異なるタイムゾーンからのサーバ生成時間である場合には? – Ronald

+0

合意。 Joda Time、date.js、および一般的に使用されている高度なパッケージでは、Datetimes、ローカル日付、およびタイムゾーンがずっと簡単です。誰がJavaScriptのネイティブソリューションが 'dateString'だと思っていたでしょうか?まあ、これは、私たちが話している_JavaScript_です.... –

3

は、次を使用します。

var today = new Date(); 

JavascriptのDateオブジェクトは、その名前にもかかわらず、タイムスタンプであることに留意してください。

<html> 
    <head> 
    </head> 
    <body> 
     <script language="javascript"> 
      var today = new Date(); 
      alert(
       today.getFullYear() + "." + 
       (today.getMonth() + 1) + "." + 
       today.getDate() 
      ); 
     </script> 
    </body> 
</html> 
0

javascriptにはToday()メソッドはありません。 new Date()を使用して現在の日付を取得できます。

4

これは興味深い質問です。まず、次の2つの日付を比較し、しかし

new Date() 

とJavaScriptで現在の日時を取得するには、本当に考えてみましょう==

で行われていない

> d = new Date(2011, 1, 1) 
Tue Feb 01 2011 00:00:00 GMT-0800 (PST) 
> d2 = new Date(2011, 1, 1) 
Tue Feb 01 2011 00:00:00 GMT-0800 (PST) 
> d == d2 
false 

しかし...

> d2 = new Date(2011, 1, 1).getTime() 
1296547200000 
> d = new Date(2011, 1, 1).getTime() 
1296547200000 
> d == d2 
true 

2つの日付オブジェクトは、全く同じオブジェクト。だから、日付を比較するときは、getTimeを使ってください。日付の平等だけに関心があり日付の時間ではない場合は、もう少し作業をしなければなりませんが、それほど悪くはありません。

補遺:

現在の日付について話をする方法を聞かれる質問。

少なくとも2つの方法があります。

  1. 時刻オブジェクトから、対応する真夜中の時刻を探します。これにはアルゴリズムがありますが、date.jsのようなパッケージを使用することもできます。

  2. 文字列にハックする:d.toISOString().substring(0,10)。これは醜いハックです。は時間帯に注意してください

+0

'getTime()'は正確なミリ秒の違いを比較するためのものではありません。つまり、今日の午後5時の日付objは、今日の午後5時01分の[日付obj] .getTime()と等しくありません。 – Yahel

+0

右、@yahelc、それは日付と日時のことです。私はそれをとてもうまく説明しなかった。 –

+0

なぜ新しい日付(2011、1、1)が** 2月** 2011の1日を与えるのですか? (ちょうどIEでこれを試しましたが、徹底的に混乱しています) – Justin