javascript的date对象是
JavaScript中处理日期时常见的“坑”有哪些?
说起Date对象,真是让人又爱又恨。最让人头疼的,莫过于那个0-indexed的月份了。多少次,我或者同事在调试的时候,发现日期总是错了一个月,最后才拍大腿,哦,原来是getMonth()返回的是0到11,而不是1到12。这简直是初学者,甚至是有经验的开发者都容易犯的错误。

还有就是时区问题。Date对象在大多数情况下是基于运行它的环境的本地时区。这意味着,如果你在上海创建一个Date对象,它会显示上海的时间;但如果这个对象被传到伦敦的服务器上处理,如果不做特殊处理,它依然会按上海时间来解读,或者在序列化成字符串时,默认会带上本地时区信息。而getTime()和Date.parse()返回的毫秒数是基于UTC的,toISOString()也输出UTC时间。这种本地时间和UTC时间之间的来回转换,以及不同方法返回结果的差异,常常导致混乱。尤其是在处理跨时区用户的数据时,一个不小心,时间就对不上了。
日期字符串解析的不确定性也是个麻烦。虽然new Date("YYYY-MM-DD")看起来很方便,但在某些老旧浏览器或者特定环境下,它可能无法正确解析,或者解析结果不是你预期的UTC时间,而是本地时间。所以,通常建议使用ISO 8601格式,或者更稳妥的办法是手动解析字符串,或者干脆用数字参数构造Date对象。
微信扫一扫
支付宝扫一扫