Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从ATOM提要解析长格式的日期_Javascript_Jquery - Fatal编程技术网

Javascript 从ATOM提要解析长格式的日期

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]);

我从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]);
更新:如果需要补偿时区偏移,则可以执行以下操作:

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())