【踩坑】date格式的转换

【踩坑】date格式的转换

问题场景:使用new Date()对字符串格式的日期进行转换,然后进行比较,但是在低版本的ios浏览器中不支持对 yyyy-mm-dd类型的进行转换。

在JavaScript中,new Date() 构造函数用于创建一个新的 Date 对象。但是,关于你提到的两种日期时间字符串格式 yyyy-mm-dd hh:mm:ss 和 yyyy/mm/dd hh:mm:ss,它们并不是 new Date() 直接支持的官方格式。然而,JavaScript 在解析日期字符串时通常比较灵活,但这并不意味着它总是能够正确地解析所有格式。

yyyy-mm-dd hh:mm:ss
这种格式通常与ISO 8601标准相似,但ISO 8601标准中的日期时间字符串通常使用 T 来分隔日期和时间部分,例如 yyyy-mm-ddThh:mm:ssZ 或包含时区偏移量的变体。
如果你的字符串中没有 T 和时区信息,并且是在JavaScript引擎(如V8,它用于Chrome和Node.js)的上下文中,那么它可能会成功解析这个字符串,但这并不是所有环境都能保证的。
如果你需要确保兼容性,最好将字符串转换为 new Date(yyyy, mm-1, dd, hh, mm, ss) 的形式,因为这种方式是明确支持的。
yyyy/mm/dd hh:mm:ss
这种格式在某些JavaScript环境中可能也能被解析,但同样,这并不是官方支持的标准格式。
同样,为了兼容性,最好避免使用这种格式,并转换为 new Date() 构造函数可以直接接受的参数形式。
建议的做法:

如果你有一个日期时间字符串,并且想要创建一个 Date 对象,那么最好的做法是将字符串解析为年、月、日、时、分、秒的单独部分,并使用这些部分来调用 new Date(year, month-1, day, hours, minutes, seconds)。这样可以确保在所有JavaScript环境中都能正确地创建 Date 对象。

注意:在 new Date() 中,月份是从0开始的,所以如果你的月份是2(表示二月),你需要传递1作为参数。同样,小时、分钟和秒也应该是整数。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值