<i id='9alYx'><tr id='9alYx'><dt id='9alYx'><q id='9alYx'><span id='9alYx'><b id='9alYx'><form id='9alYx'><ins id='9alYx'></ins><ul id='9alYx'></ul><sub id='9alYx'></sub></form><legend id='9alYx'></legend><bdo id='9alYx'><pre id='9alYx'><center id='9alYx'></center></pre></bdo></b><th id='9alYx'></th></span></q></dt></tr></i><div id='9alYx'><tfoot id='9alYx'></tfoot><dl id='9alYx'><fieldset id='9alYx'></fieldset></dl></div>
    • <bdo id='9alYx'></bdo><ul id='9alYx'></ul>
  1. <small id='9alYx'></small><noframes id='9alYx'>

  2. <tfoot id='9alYx'></tfoot><legend id='9alYx'><style id='9alYx'><dir id='9alYx'><q id='9alYx'></q></dir></style></legend>
    1. 如何在 JavaScript 中使用 ISO 8601 格式化带有时区偏

      时间:2023-10-12
          <tbody id='JsIkg'></tbody>
        • <bdo id='JsIkg'></bdo><ul id='JsIkg'></ul>
          <i id='JsIkg'><tr id='JsIkg'><dt id='JsIkg'><q id='JsIkg'><span id='JsIkg'><b id='JsIkg'><form id='JsIkg'><ins id='JsIkg'></ins><ul id='JsIkg'></ul><sub id='JsIkg'></sub></form><legend id='JsIkg'></legend><bdo id='JsIkg'><pre id='JsIkg'><center id='JsIkg'></center></pre></bdo></b><th id='JsIkg'></th></span></q></dt></tr></i><div id='JsIkg'><tfoot id='JsIkg'></tfoot><dl id='JsIkg'><fieldset id='JsIkg'></fieldset></dl></div>

              <tfoot id='JsIkg'></tfoot>

              <legend id='JsIkg'><style id='JsIkg'><dir id='JsIkg'><q id='JsIkg'></q></dir></style></legend>

                <small id='JsIkg'></small><noframes id='JsIkg'>

                本文介绍了如何在 JavaScript 中使用 ISO 8601 格式化带有时区偏移的日期?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                问题描述

                目标:找到本地时间UTC时间偏移,然后构造如下格式的URL.

                Goal: Find the local time and UTC time offset then construct the URL in following format.

                示例网址:/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 晚五个小时.

                For example, 2002-10-10T12:00:00−05:00 (noon on 10 October 2002, Central Daylight Savings Time as well as Eastern Standard Time in the U.S.) is equal to 2002-10-10T17:00:00Z, five hours later than 2002-10-10T12:00:00Z.

                所以根据我的理解,我需要通过 new Date() 找到我的当地时间,然后使用 getTimezoneOffset() 函数计算差异,然后将其附加到字符串结束.

                So based on my understanding, I need to find my local time by new Date() then use getTimezoneOffset() function to compute the difference then attach it to the end of string.

                1. 使用格式

                var local = new Date().format("yyyy-MM-ddThh:mm:ss"); // 2013-07-02T09:00:00
                

              1. 按小时获取 UTC 时间偏移量

              2. Get UTC time offset by hour

                var offset = local.getTimezoneOffset() / 60; // 7
                

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

              4. Construct URL (time part only)

                var duration = local + "-" + offset + ":00"; // 2013-07-02T09:00:00-7:00
                

              5. 以上输出表示我的当地时间是 2013/07/02 上午 9 点,与 UTC 的差异是 7 小时(UTC 比当地时间早 7 小时)

                The above output means my local time is 2013/07/02 9am and difference from UTC is 7 hours (UTC is 7 hours ahead of local time)

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

                So far it seems to work but what if getTimezoneOffset() returns negative value like -120?

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

                I'm wondering how the format should look like in such case because I cannot figure out from W3C documentation.

                推荐答案

                这是一个简单的帮助函数,它将为您格式化 JS 日期.

                Here's a simple helper function that will format JS dates for you.

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

                这篇关于如何在 JavaScript 中使用 ISO 8601 格式化带有时区偏移的日期?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                上一篇:创建具有设定时区的日期而不使用字符串表示 下一篇:如何在 JavaScript 中获取 UTC 时间戳?

                相关文章

                最新文章

                <i id='z0fiw'><tr id='z0fiw'><dt id='z0fiw'><q id='z0fiw'><span id='z0fiw'><b id='z0fiw'><form id='z0fiw'><ins id='z0fiw'></ins><ul id='z0fiw'></ul><sub id='z0fiw'></sub></form><legend id='z0fiw'></legend><bdo id='z0fiw'><pre id='z0fiw'><center id='z0fiw'></center></pre></bdo></b><th id='z0fiw'></th></span></q></dt></tr></i><div id='z0fiw'><tfoot id='z0fiw'></tfoot><dl id='z0fiw'><fieldset id='z0fiw'></fieldset></dl></div>
              6. <tfoot id='z0fiw'></tfoot>

                    • <bdo id='z0fiw'></bdo><ul id='z0fiw'></ul>
                  1. <small id='z0fiw'></small><noframes id='z0fiw'>

                    <legend id='z0fiw'><style id='z0fiw'><dir id='z0fiw'><q id='z0fiw'></q></dir></style></legend>