手动将yyyy-MM-ddTHH:mm:ss.fffZ转换为JavaScript中的DateTime [英] Convert yyyy-MM-ddTHH:mm:ss.fffZ to DateTime in JavaScript manually

查看:151
本文介绍了手动将yyyy-MM-ddTHH:mm:ss.fffZ转换为JavaScript中的DateTime的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从Webservice收到一个字符串,其日期格式为:

I receive from a Webservice a String with a date in this format:

yyyy-MM-ddTHH:mm:ss.fffZ

我需要将带有JavaScript的String转换为普通的DateTime但不使用新的日期('yyyy-MM-ddTHH:mm:ss.fffZ')因为我使用的是不支持该转换的旧版JavaScript。我可以拆分该字符串并获得:

I need to convert that String with JavaScript to a normal DateTime but without using the new Date('yyyy-MM-ddTHH:mm:ss.fffZ') because I'm using an old version of JavaScript that not support that conversion. I can split that string and get the:





  • 时间

  • Year
  • Month
  • Days
  • Time

但如何操纵时区fffZ有什么建议吗?

but how to manipulate the time zone "fffZ" Any suggestions?

推荐答案

我已经建立了解决方案。请查看 http://webcloud.se/log/JavaScript-and-ISO-8601/

I've founded the solution. Please check http://webcloud.se/log/JavaScript-and-ISO-8601/

Date.prototype.setISO8601 = function (string) {
    var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
        "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
        "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
    var d = string.match(new RegExp(regexp));

    var offset = 0;
    var date = new Date(d[1], 0, 1);

    if (d[3]) { date.setMonth(d[3] - 1); }
    if (d[5]) { date.setDate(d[5]); }
    if (d[7]) { date.setHours(d[7]); }
    if (d[8]) { date.setMinutes(d[8]); }
    if (d[10]) { date.setSeconds(d[10]); }
    if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
    if (d[14]) {
        offset = (Number(d[16]) * 60) + Number(d[17]);
        offset *= ((d[15] == '-') ? 1 : -1);
    }

    offset -= date.getTimezoneOffset();
    time = (Number(date) + (offset * 60 * 1000));
    this.setTime(Number(time));
}

这篇关于手动将yyyy-MM-ddTHH:mm:ss.fffZ转换为JavaScript中的DateTime的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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