当前位置: 首页 > 面试题库 >

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

姜彬郁
2023-03-14
问题内容

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

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

该文件说:

例如,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());


 类似资料:
  • 目标:找到和,然后以以下格式构造URL。 示例URL:/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日中午,中央夏令时和美国东部标准时间)等于20

  • 问题内容: 我正在使用bootstrap-datetimepicker和ISO8601 datetime格式,如其选项部分所述 在我的控制器中 它以(console.log)将数据发送到后端 并保存为数据库 在我的模板中 我在HTML上看到的输出为 但是根据Angular doc,它应该用于格式 我想念的是什么? 问题答案: 现在,我已经创建了一个过滤器 作为依赖项添加为 并用作 并将日期显示为

  • 我有一个客户端JavaScript,它用JavaScript生成日期()。 我需要这个日期传递到一个隐藏的字段,后面的代码可以访问。 我的问题是,当隐藏字段转换为DotNet datetime时,时间是不正确的。这是因为JavaScript包含来自客户端浏览器的时区信息。 然后,DotNet使用此信息根据服务器时间和客户端时间之间的差异重新计算时间。 我需要的是JavaScript中的年、月和日。

  • 有没有办法将ISO8601日期与Java进行比较?比如,知道字符串日期是否是良好的格式,知道月份是否为负数,以及 我还在搜索如何知道互联网上是否有课程可以比较两个ISO8601日期?比如,如果我有:2000-12-12和1999-05-06。我如何比较这两个日期,使之在年、月和日之间有准确的差异?

  • 问题内容: 在JavaScript中,如何格式化日期对象以打印为? 问题答案: 对于自定义分隔的日期格式,你必须从DateTimeFormat对象(属于ECMAScript Internationalization API的一部分)中提取日期(或时间)组件,然后手动使用所需的分隔符创建字符串。 为此,你可以使用DateTimeFormat#formatToParts: 你还可以使用来一对一地提取各

  • 问题内容: 如何转换此 格式 ( ISO8601格式 ): 2014-03-13T09:05:50.240Z 为此( MySQL DATE格式 ): 2014-03-13 在PHP中? 问题答案: 尝试这个 完整的日期功能文档可以在这里找到:http : //php.net/manual/en/function.date.php PHP函数“ strtotime”不执行任何其他操作,然后将您的时间