目标: 找到local time,UTC time offset然后以以下格式构建网址。
local time
UTC 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());