js 對 date 和 字符串 類型的正確互換【各瀏覽器兼容】,解決invalid Date


1.前言

有個需求,想要把指定日期時間的字符串轉換成date類型

pc瀏覽器正常轉換,但手機瀏覽器 返回結果是 invalid Date 【無效的日期】

2.原因

出現這樣不兼容的原因其實很簡單,

pc瀏覽器可以識別 日期時間格式 :yyyy-MM-dd hh:mm:ss  ,但是手機瀏覽器卻不行 ,

手機瀏覽器只能識別 yyyy/MM/dd hh:mm:ss 

沒錯,就是分隔符的問題  , 將 - 換成 / 即可

3.使用源碼-心得

(1)獲取當前時間

let now = new Date();

(2)指定日期字符串轉date

let timeStr = "2020/4/9 12:37:22"

let da1 = new Date(timeStr);

(3)指定日期字符串轉時間戳,有兩種方法

let timeStr = "2020/4/9 12:37:22"

方法一:

let da2 = new Date(timeStr);

let timeStamp = da2.getTime();

方法二:

let timeStamp =Data.parse(timeStr);

(4)時間戳轉字符串 【字符格式可以隨意組合】

/**
 * 時間戳轉換成日期
 */
function changeTime(timestamp) {
    if (timestamp != null) {
        //時間戳為10位需*1000,時間戳為13位的話不需乘1000
        let date = new Date(timestamp);
        let Y = date.getFullYear() + '/';
        let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '/';
        let D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) ;
        return Y + M + D;
    } else {
        return "";
    }
}
/**
 * 時間戳轉換成日期時間
 */
function changeTime(timestamp) {
    if (timestamp != null) {
        //時間戳為10位需*1000,時間戳為13位的話不需乘1000
        let date = new Date(timestamp);
        let Y = date.getFullYear() + '-';
        let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
        let D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ';
        let h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
        let m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
        let s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
        return Y + M + D + h + m + s;
    } else {
        return "";
    }
}

 


免責聲明!

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



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