在開發(fā)微信小程序時,使用了 uView 的 CountDown倒計時
組件和 uni.$u.timeFrom
Api,后臺傳遞了一個時間字符串,前臺計算時間戳的差值,來顯示還有多久開始,這個功能在模擬器和我自己手機(jī)(iphon13)上都是正常的,在提交測試之后,測試反饋(iphone12)日期顯示異常,先后經(jīng)歷了三個版本的代碼,最終解決了此問題。
1 遇到的異常情況
還有 0天 0小時 開始
NaN年前
2 結(jié)論和解決方案
-
IOS 系統(tǒng)的部分版本不支持
yyyy-mm-dd
格式,需要將-
替換為/
,即修改為yyyy/mm/dd
-
IOS 系統(tǒng)的不同版本對
yyyy-mm-dd
格式的兼容性不同,iphone13 的 16.3 版本支持yyyy-mm-dd
文章來源:http://www.zghlxwxcb.cn/news/detail-724490.html -
IOS 系統(tǒng)不支持日期的字符串拼接,如
new Date('2023-10-10 00:00:00').getTime()
,如果需要設(shè)置年月日時分秒,可以使用setHours
等方法文章來源地址http://www.zghlxwxcb.cn/news/detail-724490.htmlconst date = new Date("2023-10-10").getTime(); date.setHours(0);
3 代碼示例
// 項目開始時間,后臺返回
const startTime = "2023-10-12";
// 第一版
// 效果:12異常,13正常
// iphone12 還有 0天 0小時 開始
// iphone13 還有 1天 8小時 開始
const beginTimeStamp = new Date(`${startTime} 00:00:00`).getTime();
const currentTimeStamp = Date.now();
const timePoint = beginTimeStamp - currentTimeStamp; // 傳遞給CountDown組件
// 第二版
// 效果:12正常,13異常
// iphone12 還有 1天 8小時 開始
// iphone13 還有 0天 0小時 開始
const timeStr = startTime.replace(/-/g, "/"); // IOS不支持日期中的-,需要將-替換為/
const beginTimeStamp = new Date(`${timeStr} 00:00:00`).getTime();
const currentTimeStamp = Date.now();
const timePoint = beginTimeStamp - currentTimeStamp;
// 第三版
// 效果:12和13都正常
// iphone12 還有 1天 8小時 開始
// iphone13 還有 1天 8小時 開始
const timeStr = startTime.replace(/-/g, "/"); // IOS不支持日期中的-,需要將-替換為/
const beginDate = new Date(timeStr);
beginDate.setHours(0); // IOS不支持字符串拼接,需要調(diào)用setHours方法
const currentTimeStamp = Date.now();
const timePoint = beginTimeStamp - currentTimeStamp;
到了這里,關(guān)于【已解決】微信小程序-蘋果手機(jī)日期解析異常的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!