前段時間使用在微信小程序將字符串轉Date值時踩了個坑。
對於YYYY-MM-DD
格式的字符串,微信小程序開發工具及其真機調試和 Android 真機都是支持的,唯獨 IOS 真機不支持。
const dateStr = '2020-02-02';
const date = new Date(dateStr);
console.log(date); // IOS => Date(null)
查了一下,發現是IOS不支持這個格式,不過它支持YYYY/MM/DD
的格式。
於是我用relace()
將 - 改成 /,代碼如下:
const dateStr = '2020-02-02';
const date = new Date(dateStr.replace(/-/, '/'));
console.log(date); // IOS => Date(null)
又是隻有 IOS 不支持,百思不得其解,經過幾番調試,最後發現是沒有全局替換的原因。replace()
中的正則沒有強調全局,在IOS上遇到第一個 - 替換成功就結束了,而其他設備上認爲這就是全局替換。
將代碼改成這樣就解決了:
const dateStr = '2020-02-02';
const date = new Date(dateStr.replace(/-/g, '/'));