如何用JavaScript解析日历文件日期? [英] How to parse calendar file dates with 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屋!