如何在 JavaScript 中使用 ISO 8601 格式化带有时区偏移的日期?
P粉054616867
P粉054616867 2024-03-25 15:40:11
[HTML讨论组]

目标:找到本地时间UTC时间偏移,然后按以下格式构造URL。

示例 URL:/Actions/Sleep?duration=2002-10-10T12:00:00−05:00

该格式基于 W3C 推荐。文档说:

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

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

  1. 使用 format 获取当地时间

    var local = new Date().format("yyyy-MM-ddThh:mm:ss"); // 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年7月2日上午9点,与UTC相差7个小时(UTC比当地时间早7个小时)

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

我想知道在这种情况下格式应该是什么样子,因为我无法从 W3C 文档中弄清楚。

P粉054616867
P粉054616867

全部回复(1)
P粉545956597

这是一个简单的辅助函数,可以为您格式化 JS 日期。

function toIsoString(date) {
  var tzo = -date.getTimezoneOffset(),
      dif = tzo >= 0 ? '+' : '-',
      pad = function(num) {
          return (num 
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号