getDate()返回日期不一致问题引发的bug

问题描述

最近在webapp的开发中遇到一个Date对象中getDate获取日期的兼容性问题,Date对象的getDate方法返回的日期和传入的日期不一致,例如:

在android 4.3以下版本,getDate返回的日期会有一天的偏差

    var d = new Date('1987/04/12');
        d.getDate(); // 目标是返回12,但部分机型会返回11

问题排查

经过一番折腾Google搜索查找资料,初步认为是以下两个问题导致:

1、Date对象初始化兼容性问题

Date对象初始化有以下几种方式:

new Date();
new Date(value);
new Date(dateString);
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);

其中,第三种方式是通过日期字符串进行初始化,这个日期字符串必须符合Date.parse()的合法日期格式。

    new Date('2016-09-25'); // 这种格式无法被所有浏览器识别,存在兼容性问题 
    new Date('2016/09/25'); // 基于'/'格式的日期字符串,被各个浏览器所广泛支持的

2、getDate受时区影响问题

在使用测试机进行调试的时候,把时区改变会导致取值有问题,目前还确定是什么问题。
详见getDate返回错误日期

更多阅读

getDate返回错误日期
Date对象详解
Date.parse()详解
JS原生Date类型方法的一些冷知识
http://stackoverflow.com/questions/4371252/javascript-getdate-problem?rq=1

作者:GeniusLyzh
出处:http://www.cnblogs.com/GeniusLyzh/
本文链接:https://www.cnblogs.com/GeniusLyzh/p/5906305.html
本文版权归作者和博客园共有,欢迎转载,须保留此段声明,并给出原文链接,谢谢!
如果阅读了本文章,觉得有帮助,欢迎点击右下角推荐
posted @   Aarongo  阅读(2096)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示