2011-11-27 91 views
0

你好我正在使用fullcalendar jQuery插件來創建一個日曆應用程序。當我呼籲事件的啓動方法對象的日期格式我得到的是這樣的:如何解析fullcalendar event.start方法上的事件開始時間?

ISO格式:

太陽2011年11月27日6時30分00秒GMT + 0200(EET)

現在我只想保留時間和事件的分鐘:

6小時

30分鐘

在我們的例子中。

如何僅使用JavaScript修剪/解析時間?

+0

另外,如果我想解析日「太陽報」?因爲getDay方法返回數字0-6的一天。 –

回答

3

您可以使用Date.parse:

var your_date = "Sun Nov 27 2011 06:30:00 GMT+0200 (EET)"; 
var t = Date.parse(your_date); // date in milliseconds since January 1, 1970 
var d = new Date(t); 
d.getHours(); // 6 hours 
d.getMinutes(); // 30 minutes 

http://www.w3schools.com/jsref/jsref_obj_date.asp看看更多的JavaScript的日期選項。

+0

謝謝這是完美的作品。 –

1

您可以使用Date.parsenew Date使用時,你獲得的當前時區 Date對象,所以用在不同的計算機不同的小時值。

更強大的選項是使用正則表達式。如果格式總是像您張貼,則小時可通過該正則表達式獲得:

/ (\d+):/ 

這意味着:

  1. 的空間
  2. 一個或多個數字
  3. 冒號

對於幾分鐘它是類似的東西,但那些在兩邊都用冒號包圍:

/:(\d+):/ 

然後可以解析號碼取出來經由.exec(str)[1],其中1是組1,用括號限定。

轉換爲數字可以用+str做到:

var str  = "Sun Nov 27 2011 06:30:00 GMT+0200 (EET)", 
    hours = +/ (\d+):/.exec(str)[1]; // 6 
    minutes = +/:(\d+):/.exec(str)[1]; // 30 
+0

非常感謝您 –

+0

對於簡單的匹配,使用'String.prototype.match(正則表達式)','不RegExp.prototype.exec(字符串)': '變種小時= +(str.match(/(\ d +) :/)|| [大,NaN])[1];' – PointedEars

1

答案是有點複雜,因爲你可以簡單地使用字符串中的JavaScript Date()構造是這樣的:

var d = new Date("Sun Nov 27 2011 06:30:00 GMT+0200 (EET)"); 

但是撥打電話d.getHours()可能不會導致您想要的值,因爲JavaScript會將日期轉換爲您的本地時區。例如,在德國做alert(d)對我產生:

Sun Nov 27 2011 05:30:00 GMT+0100 (CET) 

如果這是你想要的,你就大功告成了。否則,您需要將其轉換爲所需的時區。

+0

現在,這是確定的,因爲它的日曆我想每個當地時間:) 謝謝! –

1

我倒沒到jQuery的(我會盡量避免它),所以我認爲他們做了正確的事情,並存儲在Date實例。如果是這樣的話,你只看到(本地化)Date實例表示(好像你叫其toString()法),你可以使用它的原型方法檢索組件:

var d = jQuery(…).whatever(…); 
var hours = d.getHours(); 
var minutes = d.getMinutes(); 

var hours = d.getUTCHours(); 
var minutes = d.getUTCMinutes(); 

取決於您感興趣的內容。無需解析。

相關問題