Safari5及以下版本不支持Date的横杠字符串格式

Date构造器有多种方式创建方式

 

一、new Date()

1
2
// 当天
var date = new Date()

 

二、new Date(value)

1
2
3
4
5
// value 为一个整数
var date = new Date(1411616202925)
var year = date.getFullYear() // 2014
var month = date.getMonth() // 8
var today  = date.getDate() // 25

value为毫秒数(整数)可以通过Date.now()生成一个,也可以通过Date.parse()转换得到。

 

三、new Date(dateString)

1
2
var date1 = new Date("December 17, 2014 12:24:00")
var date2 = new Date("2014-09-25T13:24:00")

dateString必须遵循RFC 2822和ECMAScript15.9.1.15

 

四、new Date(year, month, day, hour, minute, second, millsecond)

1
2
var birthday = new Date(2014, 8, 25)
var birthday = new Date(2014, 8, 25,15, 24, 0)

 

对于第二种方式构造Date对象,有时只需要获取日期,我们常用这种格式 "2014-09-25",比如

1
2
3
4
var date = new Date('2014-09-25')
date.getFullYear() // 2014
date.getMonth() // 8 (月是0-11)
date.getDate() // 25

这段代码在多数浏览器中没有问题,但在win Safari5及以下版本中会显示NAN。Mac上Safari7则没有此问题。

这种格式规范里是允许的

 

需注意,为避免这种问题需要使用其他构造方式创建Date对象。

 

相关:

http://tools.ietf.org/html/rfc2822#page-14

http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

 

posted on   snandy  阅读(3636)  评论(1编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示