2011-11-27 88 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(); 

取决于您感兴趣的内容。无需解析。

相关问题