如何用JavaScript解析日历文件日期? [英] How to parse calendar file dates with JavaScript?

查看:204
本文介绍了如何用JavaScript解析日历文件日期?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们需要在浏览器上使用JavaScript来阅读和解析日历文件(.ics)(也称为iCal格式)。我写了一个自定义函数来读取这些值,然后使用JavaScript Date()函数来创建一个数据对象。

We need to use JavaScript on the browser to read and parse calendar files (.ics) (also called iCal formats). I wrote a custom function to read these values and then use the JavaScript Date() function to make a data object.

有没有更简单更好的方法?

Is any easier and better way to do this? Please look at my function (below), your comments would be welcome.

.ics文件中典型的日期值如下所示:

A typical date value from an .ics file looks like this:

DTSTART:20110914T184000Z

DTSTART:20110914T184000Z

需要在冒号处分开,因此:

Need to break it apart at the colon, so:

var strData = 'DTSTART:20110914T184000Z'
var x = strData.indexOf(":");
var strVal = strData.slice(x + 1 );

接下来,调用返回日期对象的函数:

next, call a function that returns a date object:

var dateObj = calenDate(strVal);

//产生dateObj值:Fri Oct 14 2011 18:40:00 GMT-0400时间)

//resulting dateObj value: Fri Oct 14 2011 18:40:00 GMT-0400 (Eastern Daylight Time)

以下是解析日期的函数。

Here is the function that parses the date.

function calenDate(icalStr)  {
    // icalStr = '20110914T184000Z'             
    var strYear = icalStr.substr(0,4);
    var strMonth = icalStr.substr(4,2);
    var strDay = icalStr.substr(6,2);
    var strHour = icalStr.substr(9,2);
    var strMin = icalStr.substr(11,2);
    var strSec = icalStr.substr(13,2);

    var oDate =  new Date(strYear,strMonth, strDay, strHour, strMin, strSec)

return oDate;
}

我认为有些事是错误的,因为这个月错了。

I think something is wrong since it is getting the month wrong.

推荐答案

由于某些奇怪的原因,month参数为零( reference )。

For some odd reason the month parameter is zero-based (reference).

在函数中更改此行。

var strMonth = icalStr.substr(4,2);

var strMonth = parseInt(icalStr.substr(4,2),10)-1;

查看jsFiddle的工作演示: http://jsfiddle.net/cTkTQ/

See working demo on jsFiddle: http://jsfiddle.net/cTkTQ/

这篇关于如何用JavaScript解析日历文件日期?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆