2011-08-03 55 views
1

我想確定一個給定的日期對象是否與當天同一天。以下是僞代碼。javascript今天()函數

// 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

你可以只比較toDateString()幾號字符串要傳遞到new Date()無傳遞給它的任何參數(它將默認爲今天)。

// 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

這不可能比我猜想的更簡單。但是在當前時間是本地時間,另一個是服務器從不同時區生成時間的情況下? – Ronald

+0

同意。使用Joda Time,date.js和我們通常使用的高級包,日期時間,本地日期和時區更容易。誰會認爲JavaScript的本地解決方案是'dateString'?哦,等等,對,這是我們正在談論的_JavaScript_。@ –

3

使用以下命令:

var today = new Date(); 

請記住,JavaScript的Date對象是儘管它的名字時間戳。你可能會想各個字段比較與getMonth()getDate()getFullYear()平等,按照下面的示例:

<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

這是一個有趣的問題。首先,你在JavaScript中當前日期時間與

new Date() 

然而,比較兩個日期是不是真的有==

做考慮

> 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 

因爲兩個日期對象只有在它們是完全相同的物體。所以當你比較日期時,使用getTime。如果你只關心日期的平等而不關心日期時間,那麼你必須做更多的工作,但並不是那麼糟糕。

附錄:

該問題詢問了一種討論當前日期的方法。

在這裏,您至少有兩種方法可行。

  1. 從datetime對象中找到相應的午夜時間。有這樣的算法,或者你可以使用像date.js這樣的軟件包。

  2. 將其分解爲字符串:d.toISOString().substring(0,10)。這是一個醜陋的黑客,請小心時區

+0

'getTime()'與日期比較沒有太大的區別,因爲它比較精確的毫秒差異。即'[今天下午5點的日期對象] .getTime()'不等於'[日期對象今天下午5點01點] .getTime()'。 – Yahel

+0

對,@yahelc,這是一個日期與日期時間的事情。我沒有解釋得很好。 –

+0

爲什麼'新日期(2011,1,1)'給** 2011年2月**的第一個?! (剛剛在IE瀏覽器試過了,我感到十分困惑) – Justin