本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

【j2开奖】【第719期】关于Javascript中Date类型的常见问题与建议做法(3)

时间:2016-10-02 01:18来源:668论坛 作者:j2开奖直播 点击:
至于时间部分,日期的部分也不能省略,而日期与时间部分回固定用一个T来分隔。时间的部分,从[秒]开始也是可以省略,不一定要完整的时间格式,而且

  至于时间部分,日期的部分也不能省略,而日期与时间部分回固定用一个T来分隔。时间的部分,从[秒]开始也是可以省略,不一定要完整的时间格式,而且时间格式最后的Z代表的是Time zone的意思,这个字段也是可以省略的。

  例如以下时间格式都是合法的。

  THH:mm

  THH:mm:ss

  THH:mm:ss.sss

  如果把日期与时间组合在一起,就有非常多钟可能的变化,以下我举的几个例子,这些都是合法有效的日期格式字符串:

  new Date(‘2016T02:34’);

  new Date(‘2016-09T02:34:34’);

  new Date(‘2016-09-25T02:34:33’);

  new Date(‘2016-09T02:34:33.346’);

  

【j2开奖】【第719期】关于Javascript中Date类型的常见问题与建议做法

  结论

  “java 啊 java,枉费我跟你相处这么久,为什么你总是让人搞不懂啊”这句话不知道在多少web开发人员心中出现过,我的[前端工程研究]系列就是试图解决大家长久以来最搞不懂的坑。

  请记得一件事,解析日期时间字符串格式时,在ES3规范中根本没有定义应该的日期时间字符串格式,到了ES5才有了明确的ISO-8601格式规范。

  在那个没有明确定义日期时间字符串格式的ES3年代(IE6~8),当时各浏览器都职能各自实现自己的日期时间格式解析代,因此跨浏览器之间的兼容问题自然会有。但当初毕竟浏览器都是美国人做的,所以用美国时间常见的日期时间格式来解析,肯定是没有问题的。比如:Sat, 24 Sep 2016 20:42:16 、 Sat, 24 Sep 2016 20:42:16 GMT 或 Sat, 24 Sep 2016 20:42:16 GMT+0800 等等。

  而到了ES5规范问世之后(IE9+),因为必须向前兼容早起的实现,所以只要不是ISO-8601的日期格式出现,不同浏览器之间,还是会有可能出现不同的解析结果,像是safari对于2016-09-24 20:42:16这种格式就一直不支持的,你也不能说他错,他们就是遵照ES5规范去实现而已,所以大家也不用抱怨了,多一点包容与理解,世界才有可能更加祥和。

  如果你的网站还是必须支持ie8或以下浏览器的话,因为ie8以下的java runtime并没有实现es5规范,所以当你的web api响应iso-8601日期格式,旧版ie浏览器还是无法解析,这个问题还是必须要考虑进去。

  如果你要我给建议的话,我可以说兼容性最高的应该就是Sat, 24 Sep 2016 20:42:16 GMT这种日期时间格式,但请注意这种格式的缺点是[如果你没有加上GMT时区,浏览器预设酒会变这种格式解析为用户电脑的本地时间],如果没注意到时区部分,对于全球性或跨国浏览用户来说可能会出现错误的时间差,否则请一律使用ISO-8601标准日期时间格式( 2016-09T02:34:33.346Z ),这种格式的优点就是[浏览器只会将这种格式解析为GMT/UTC标准时区的时间],这样反而可以强迫你用具有时区的思维来开发代,出现时差错误的问题也会减少。

  下次大家在抱怨浏览器或框架之前,建议先查过java的权威文件,我心目中的java权威文件是java mdn网站,上面对java的介绍与说明一致都是最精华也是最完整的,大家可以多多利用。

  补充说明

  以下补充在写.NET/c#的DateTime格式时,方便转换成ISO-8601日期时间格式代码范例:

  var dt = new DateTime(2016, 9, 25, 17, 57, 43);

  Console.WriteLine(dt.ToUniversalTime().ToString(“s”));

  // 2016-09-25T09:57:43

相关链接

Date - Java | MDN

到底是 GMT+8 还是 UTC+8 ? - PanSci 泛科学

ECMA Language Specification - ECMA-262 Edition 5.1 - 15.9.1.15 Date Time String Format

ECMA - Wikipedia, the free encyclopedia

java - Safari JS cannot parse YYYY-MM-DD date format? - Stack Overflow

Standard Date and Time Format Strings - MSDN

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容