【问题标题】:Format ISO 8601 date string to 0:00AM with javascript使用 javascript 将 ISO 8601 日期字符串格式化为 0:00AM
【发布时间】:2013-10-24 22:00:15
【问题描述】:

我有以下 ISO 8601 日期字符串:

var isoDate = 2013-10-01T09:00:00.000-04:00;

当尝试使用Date() 函数格式化日期时,日期的时区更改为我的本地时区(注意它是08:00 而不是09:00

Date.fromISOString(isoDate);  /* Returns: Tue Oct 01 2013 08:00:00 GMT-0500 (Central Standard Time)*/

我想保持当前字符串的原始时区完全不变。

如果字符串有09:00,我想输出9PM

最传统的做法是什么?

注意:我也尝试过使用datejs,但没有成功。尝试以下返回空白结果:

Date.parse('2013-10-01T09:00:00.000-04:00')

【问题讨论】:

    标签: javascript debugging date iso8601 isodate


    【解决方案1】:

    使用new 运算符、Date 构造函数、toISOString 方法和多个字符串替换来保留原始字符串:

    var foo = "2013-10-01T09:00:00.000-04:00";
    var bar = foo.substr(-6);
    var baz = foo.substr(11,2)
    var isoDate = new Date(foo).toISOString().replace("Z",bar).replace(/T../,"T"+baz);
    var hours = String(baz).concat(Number(baz) < 12 ? "PM" : "AM").replace(/^0/,"")
    

    参考文献

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多