如何解析完整日历事件上的事件开始时间.start方法

How to parse event start time on fullcalendar event.start method?

本文关键字:事件 开始 开始时 时间 方法 start 何解析 日历      更新时间:2023-09-26

你好,我正在使用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+):/

这意味着:

    <
  1. 空间/gh>
  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

我不太喜欢jQuery(我尽量避免使用它),所以我认为他们做了正确的事情并存储了一个Date实例。如果是这种情况,那么您只能看到该Date实例的(本地化的)字符串表示(就像您调用了它的toString()方法一样),并且您可以使用它的原型方法检索组件:

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

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

取决于你对什么感兴趣。不需要解析