代码之家  ›  专栏  ›  技术社区  ›  Kjensen

从Atom源解析长格式的日期

  •  2
  • Kjensen  · 技术社区  · 16 年前

    我从一个RSS源(Atom)获得这个日期的javascript:

    2009-09-02T07:35:00+00:00
    

    如果我尝试日期分析,我会得到Nan。

    我怎么能把它解析成一个日期,这样我就可以对它进行日期处理了?

    3 回复  |  直到 14 年前
        1
  •  4
  •   Jason Plank Maksim Kondratyuk    14 年前

    这是我的代码,带有测试用例:

    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())
    
        2
  •  3
  •   Prestaul    16 年前

    您可以将该日期转换为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());
    
        3
  •  2
  •   Community Mohan Dere    8 年前

    也许这个 question 可以帮助你。

    如果使用jquery this 也有用