你好,我正在使用fullcalendar jQuery插件来创建一个日历应用程序。当我调用事件对象上的start方法时,我得到的日期格式是这样的:
ISO格式:
2011年11月27日星期日06:30:00 GMT+0200 (EET)
现在我想只保留事件的时间和分钟:
6小时30分钟
我如何修剪/解析只有时间与JavaScript?
可以使用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日期选项
答案有点复杂,因为您可以简单地在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)
如果这是你想要的,你就完成了。否则,您需要将其转换为所需的时区。
您可以使用Date.parse
,但当与new Date
一起使用时,您将获得当前时区中的Date对象,因此在不同的计算机上具有不同的小时值。
一个更健壮的选择是使用正则表达式。如果格式总是像您发布的那样,那么可以通过以下正则表达式获得小时数:
/ (d+):/
这意味着:
- <
- 空间/gh>
- 一个或多个数字
- 冒号
对于分钟来说,它是类似的,但是两边都有一个冒号:
/:(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
我不太喜欢jQuery(我尽量避免使用它),所以我认为他们做了正确的事情并存储了一个Date
实例。如果是这种情况,那么您只能看到该Date
实例的(本地化的)字符串表示(就像您调用了它的toString()
方法一样),并且您可以使用它的原型方法检索组件:
var d = jQuery(…).whatever(…);
var hours = d.getHours();
var minutes = d.getMinutes();
或
var hours = d.getUTCHours();
var minutes = d.getUTCMinutes();
取决于你对什么感兴趣。不需要解析