Javascript 从ATOM提要解析长格式的日期
我从rss提要(atom)中以javascript获取此日期: 如果我尝试Date.parse,我会得到NaN 如何将其解析为日期,以便对其进行日期处理?也许这可以帮助您Javascript 从ATOM提要解析长格式的日期,javascript,jquery,Javascript,Jquery,我从rss提要(atom)中以javascript获取此日期: 如果我尝试Date.parse,我会得到NaN 如何将其解析为日期,以便对其进行日期处理?也许这可以帮助您 如果您使用jquery也很有用,那么您可以很容易地将该日期转换为javascript喜欢的格式。只需删除“T”和“+”后面的所有内容: var val = '2009-09-02T07:35:00+00:00', date = new Date(val.replace('T', ' ').split('+')[0]);
如果您使用jquery也很有用,那么您可以很容易地将该日期转换为javascript喜欢的格式。只需删除“T”和“+”后面的所有内容:
var val = '2009-09-02T07:35:00+00:00',
date = new Date(val.replace('T', ' ').split('+')[0]);
更新:如果需要补偿时区偏移,则可以执行以下操作:
var val = '2009-09-02T07:35:00-06:00',
matchOffset = /([+-])(\d\d):(\d\d)$/,
offset = matchOffset.exec(val),
date = new Date(val.replace('T', ' ').replace(matchOffset, ''));
offset = (offset[1] == '+' ? -1 : 1) * (offset[2] * 60 + Number(offset[3]));
date.setMinutes(date.getMinutes() + offset - date.getTimezoneOffset());
以下是我的代码和测试用例:
function myDateParser(datestr) {
var yy = datestr.substring(0,4);
var mo = datestr.substring(5,7);
var dd = datestr.substring(8,10);
var hh = datestr.substring(11,13);
var mi = datestr.substring(14,16);
var ss = datestr.substring(17,19);
var tzs = datestr.substring(19,20);
var tzhh = datestr.substring(20,22);
var tzmi = datestr.substring(23,25);
var myutc = Date.UTC(yy-0,mo-1,dd-0,hh-0,mi-0,ss-0);
var tzos = (tzs+(tzhh * 60 + tzmi * 1)) * 60000;
return new Date(myutc-tzos);
}
javascript:alert(myDateParser("2009-09-02T07:35:00+00:00"))
javascript:alert(myDateParser("2009-09-02T07:35:00-04:00"))
javascript:alert(myDateParser("2009-12-25T18:08:20-05:00"))
javascript:alert(myDateParser("2010-03-17T22:30:00+10:30").toGMTString())
如果“+”表示时区偏移,如何删除“+”之后的所有内容?结果日期不应该适当调整吗?这取决于他打算如何使用它,但这是一个很好的观点。生活在+00:00时区有它的优势。;)我认为这是行不通的,因为“val”减去“t”以及“+”之后的所有内容仍然不是有效的日期字符串,您还需要将“-”s替换为“/”s。第二个替换也不能工作,因为“matchOffset”是一个数组,“replace(matchOffset[0],”)可以工作。@Jonathon,我向您保证它可以工作。日期构造函数可以处理多种输入格式,matchOffset不是数组,而是正则表达式。
function myDateParser(datestr) {
var yy = datestr.substring(0,4);
var mo = datestr.substring(5,7);
var dd = datestr.substring(8,10);
var hh = datestr.substring(11,13);
var mi = datestr.substring(14,16);
var ss = datestr.substring(17,19);
var tzs = datestr.substring(19,20);
var tzhh = datestr.substring(20,22);
var tzmi = datestr.substring(23,25);
var myutc = Date.UTC(yy-0,mo-1,dd-0,hh-0,mi-0,ss-0);
var tzos = (tzs+(tzhh * 60 + tzmi * 1)) * 60000;
return new Date(myutc-tzos);
}
javascript:alert(myDateParser("2009-09-02T07:35:00+00:00"))
javascript:alert(myDateParser("2009-09-02T07:35:00-04:00"))
javascript:alert(myDateParser("2009-12-25T18:08:20-05:00"))
javascript:alert(myDateParser("2010-03-17T22:30:00+10:30").toGMTString())