目标:找到local time并UTC time offset以下列格式构建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日中午,中央夏令时以及美国东部标准时间)等于2002-10-10T17:00:00Z,比2002-10-10T12:00:00Z晚5个小时.
所以基于我的理解,我需要通过新的Date()找到我的本地时间,然后使用getTimezoneOffset()函数来计算差异,然后将它附加到字符串的末尾.
1.以格式获取当地时间
var local = new Date().format("yyyy-MM-ddThh:mm:ss"); //today (local time)
Run Code Online (Sandbox Code Playgroud)
产量
2013-07-02T09:00:00
Run Code Online (Sandbox Code Playgroud)
2.以小时为单位获取UTC时间偏移量
var offset = local.getTimezoneOffset() / 60;
Run Code Online (Sandbox Code Playgroud)
产量
7
Run Code Online (Sandbox Code Playgroud)
3.Construct URL(仅限时间部分)
var duration = local + "-" + offset + ":00";
Run Code Online (Sandbox Code Playgroud)
输出:
2013-07-02T09:00:00-7:00
Run Code Online (Sandbox Code Playgroud)
以上输出结果表示我的当地时间是2013/07/02 9am,与UTC的差异是7小时(UTC是比当地时间早7小时)
到目前为止它似乎工作,但如果getTimezoneOffset()返回负值如-120怎么办?
我想知道在这种情况下格式应该是什么样的,因为我无法从W3C文档中找到答案.提前致谢.
我没能在IE8和Safari 5上解析ISO-8601日期"2011-04-26T13:16:50Z",但它适用于Chrome 10,FF4.支持似乎很混杂?
有谁知道哪些浏览器可以解析这种格式的实际状态?我假设IE6,7也会失败.
var d = Date.parse("2011-04-26T13:16:50Z");
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用javascript将日期对象转换为有效的mysql日期 - 这样做的最佳方法是什么?
我正在以两种不同的格式在数据库中插入日期.
这是作为Datetime插入
var mydate;
mydate = new Date();
document.getElementById('clockinhour').value = mydate.toISOString().slice(0, 19).replace('T', ' ');
Run Code Online (Sandbox Code Playgroud)
输出A.
2017-06-21 20:14:31
Run Code Online (Sandbox Code Playgroud)
这是作为varchar插入:
document.getElementById('clocked_in_time').value = Date();
Run Code Online (Sandbox Code Playgroud)
输出B.
Wed Jun 21 2017 16:14:31 GMT-0400 (Eastern Standard Time)
Run Code Online (Sandbox Code Playgroud)
输出B是正确的时间但我需要显示输出A.什么原因导致转换为ISOString时的时间变化?我怎样才能解决这个问题?
如何格式化ISO格式的javascript日期,但在当地时间?
与myDate.toISOString()我收到时间:"2012-09-13T19:12:23.826Z"
但是在这里,它是22:13,那么我如何在上面的格式中包含时区?
我最后做了......
pad=function(e,t,n){n=n||"0",t=t||2;while((""+e).length<t)e=n+e;return e}
c = new Date()
c.getFullYear()+"-"+pad(c.getMonth()+1)+"-"+pad(c.getDate()-5)+"T"+c.toLocaleTimeString().replace(/\D/g,':')+"."+pad(c.getMilliseconds(),3)
Run Code Online (Sandbox Code Playgroud) 我不想使用像 momentjs 这样的任何外部库,我想自己创建一个格式化的日期字符串。我尝试使用new Date().toISOString(),但它正在丢失时区。
这:
new Date()
Run Code Online (Sandbox Code Playgroud)
给出:
Sat Jun 24 2017 09:32:10 GMT+0300 (RTZ 2 (winter))
和:
new Date().toISOString();
Run Code Online (Sandbox Code Playgroud)
给出:
2017-06-24T06:32:22.990Z
并且09:32:10是正确的时间,因此06:32:22丢失了时区信息。
除此之外,它看起来new Date().toLocaleString()几乎满足了我的需要。最后几个小时是正确的。结果:"24.06.2017, 11:37:05"。
无论如何,我可以将HTML5输入类型='datetime-local'的默认值设置为今天的日期和当前时间.
谢谢你
假设我们有这个日期时间:
var d = new Date("Sat Jul 21 2018 14:00:00 GMT+0200");
Run Code Online (Sandbox Code Playgroud)
将其导出为字符串(console.log(d))会在浏览器之间产生不一致的结果:
Sat Jul 21 2018 14:00:00 GMT+0200 (Paris, Madrid (heure d’été)) 使用Chrome
Sat Jul 21 14:00:00 UTC+0200 2018 使用Internet Explorer等
因此我们不能将日期时间发送到格式不一致的服务器。
那么自然的想法是要求一个ISO8601日期时间,并使用d.toISOString();它,但它给出了UTC日期时间:2018-07-21T12:00:00.000Z而我想使用本地时区时间:
2018-07-21T14:00:00+0200
or
2018-07-21T14:00:00
Run Code Online (Sandbox Code Playgroud)
如何获得它(不依赖诸如momentjs之类的第三方依赖项)?
我尝试了一下,似乎可行,但是没有更自然的方法吗?
var d = new Date("Sat Jul 21 2018 14:00:00 GMT+0200");
Run Code Online (Sandbox Code Playgroud)