ISO 8601如何在JavaScript中格式化带时区偏移的日期?

目标:找到local timeUTC time offset然后以以下格式构建网址。

范例网址:/ Actions / Sleep?duration = 2002-10-10T12:00:00−05:00

该格式基于W3C建议:http : //www.w3.org/TR/xmlschema11-2/#dateTime

该文件说:

例如,2002-10-10T12:00:00-05:00(2002年10月10日中午,美国中部夏令时以及美国东部标准时间)等于2002-10-10T17:00:00Z,比2002-10-10T12:00:00Z晚五个小时。

因此,根据我的理解,我需要通过新的Date()查找我的本地时间,然后使用getTimezoneOffset()函数计算时差,然后将其附加到字符串的末尾。

1.获取本地时间格式

var local = new Date().format("yyyy-MM-ddThh:mm:ss"); //today (local time)

输出

2013-07-02T09:00:00

2.获取UTC时间以小时为单位

var offset = local.getTimezoneOffset() / 60;

输出

7

3.构造URL(仅限时间部分)

var duration = local + "-" + offset + ":00";

输出:

2013-07-02T09:00:00-7:00

上面的输出表示我的本地时间是2013/07/02 9am,与UTC的时差是7小时(UTC比本地时间早7小时)

到目前为止,它似乎仍然有效,但是如果getTimezoneOffset()返回负值(如-120)怎么办?

我想知道这种情况下的格式应该如何,因为我无法从W3C文档中弄清楚。提前致谢。

史蒂文·莫斯利

以下内容应该可以正常运行,并且适用于所有浏览器(感谢@MattJohnson提示)

Date.prototype.toIsoString = function() {
    var tzo = -this.getTimezoneOffset(),
        dif = tzo >= 0 ? '+' : '-',
        pad = function(num) {
            var norm = Math.floor(Math.abs(num));
            return (norm < 10 ? '0' : '') + norm;
        };
    return this.getFullYear() +
        '-' + pad(this.getMonth() + 1) +
        '-' + pad(this.getDate()) +
        'T' + pad(this.getHours()) +
        ':' + pad(this.getMinutes()) +
        ':' + pad(this.getSeconds()) +
        dif + pad(tzo / 60) +
        ':' + pad(tzo % 60);
}

var dt = new Date();
console.log(dt.toIsoString());

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在PHP中获取带有时区的ISO 8601格式的时间戳

来自分类Dev

如何在Haskell中将UTCTime格式化为ISO 8601

来自分类Dev

MySQL ISO 8601日期带有时区偏移量而不是Z值

来自分类Dev

如何在php中将ISO8601转换为日期格式

来自分类Dev

如何在Swift中解析/创建以小数秒UTC时区(ISO 8601,RFC 3339)格式设置的日期时间戳?

来自分类Dev

如何在java.time的模式字符串中格式化带时区的日期?

来自分类Dev

使用冒号分隔符格式化ISO 8601日期

来自分类Dev

python ISO 8601日期格式

来自分类Dev

在带时区的ISO 8601中写入numpy datetime64

来自分类Dev

如何使用JavaScript将ISO 8601日期格式化为更易读的格式?

来自分类Dev

ISO 8601日期时间格式,包含“ Z”和“ +0000”的偏移量

来自分类Dev

Javascript-将日期字符串重新格式化为ISO8601

来自分类Dev

以ISO 8601格式输出日期

来自分类Dev

Swift ISO 8601日期格式

来自分类Dev

如何在NodeJS中格式化ISO日期

来自分类Dev

如何在Pandas数据框中将日期转换为ISO-8601 DateTime格式

来自分类Dev

如何在Haskell中将UTCTime格式化为ISO 8601

来自分类Dev

MySQL ISO 8601日期带有时区偏移量而不是Z值

来自分类Dev

如何在PHP中获取带有时区的ISO 8601格式的时间戳

来自分类Dev

UTC iso8601日期为本地时区的某些格式

来自分类Dev

如何在PHP中以ISO 8601开头/结尾简洁地格式化时间间隔?

来自分类Dev

如何在Lua中将ISO 8601持续时间转换为格式化的字符串?

来自分类Dev

使用时区将日期时间转换为 ISO 8601 日期时间格式

来自分类Dev

如何在javascript中将ISO 8601日期转换为'/Date(1525687010053)/'格式?

来自分类Dev

如何在 PHP 中将没有时区的 ISO 8601 时间戳转换为带时区的 ISO 8601 时间戳?

来自分类Dev

DateTimeFormatter 中的格式化程序,用于时间的 ISO 8601 日期格式

来自分类Dev

如何将 MySQL 日期时间转换为没有偏移的 ISO 8601 日期格式?

来自分类Dev

日期输入:带时区的 ISO 格式

来自分类Dev

ISO8601 日期解析忽略偏移

Related 相关文章

  1. 1

    如何在PHP中获取带有时区的ISO 8601格式的时间戳

  2. 2

    如何在Haskell中将UTCTime格式化为ISO 8601

  3. 3

    MySQL ISO 8601日期带有时区偏移量而不是Z值

  4. 4

    如何在php中将ISO8601转换为日期格式

  5. 5

    如何在Swift中解析/创建以小数秒UTC时区(ISO 8601,RFC 3339)格式设置的日期时间戳?

  6. 6

    如何在java.time的模式字符串中格式化带时区的日期?

  7. 7

    使用冒号分隔符格式化ISO 8601日期

  8. 8

    python ISO 8601日期格式

  9. 9

    在带时区的ISO 8601中写入numpy datetime64

  10. 10

    如何使用JavaScript将ISO 8601日期格式化为更易读的格式?

  11. 11

    ISO 8601日期时间格式,包含“ Z”和“ +0000”的偏移量

  12. 12

    Javascript-将日期字符串重新格式化为ISO8601

  13. 13

    以ISO 8601格式输出日期

  14. 14

    Swift ISO 8601日期格式

  15. 15

    如何在NodeJS中格式化ISO日期

  16. 16

    如何在Pandas数据框中将日期转换为ISO-8601 DateTime格式

  17. 17

    如何在Haskell中将UTCTime格式化为ISO 8601

  18. 18

    MySQL ISO 8601日期带有时区偏移量而不是Z值

  19. 19

    如何在PHP中获取带有时区的ISO 8601格式的时间戳

  20. 20

    UTC iso8601日期为本地时区的某些格式

  21. 21

    如何在PHP中以ISO 8601开头/结尾简洁地格式化时间间隔?

  22. 22

    如何在Lua中将ISO 8601持续时间转换为格式化的字符串?

  23. 23

    使用时区将日期时间转换为 ISO 8601 日期时间格式

  24. 24

    如何在javascript中将ISO 8601日期转换为'/Date(1525687010053)/'格式?

  25. 25

    如何在 PHP 中将没有时区的 ISO 8601 时间戳转换为带时区的 ISO 8601 时间戳?

  26. 26

    DateTimeFormatter 中的格式化程序,用于时间的 ISO 8601 日期格式

  27. 27

    如何将 MySQL 日期时间转换为没有偏移的 ISO 8601 日期格式?

  28. 28

    日期输入:带时区的 ISO 格式

  29. 29

    ISO8601 日期解析忽略偏移

热门标签

归档