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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM