在開發一些有關商品交易類的項目時,多半會遇到活動倒計時之類的需求,最近也是在小程序中遇到,實現方法不少,可是在小程序中遇到ios和安卓的兼容問題,因此記錄下來ios
/** * timestampSwitch - 根據對比傳入的兩個時間戳,計算出相差的時分秒 * * @param{String}startTimestamp 計算起始時間戳,默認是當前時間 * @param{Number}endTimestamp 計算結束時間(當前接受的是時間字符串,如2018-11-30 23:59:59) * @return{Object} */ const timestampSwitch = (endTimestamp, startTimestamp = (new Date()).valueOf()) => { if (!Number(endTimestamp) || !Number(startTimestamp)) console.error('Incorrect parameter'); // 兼容ios let et = Date.parse(endTimestamp) || Date.parse(endTimestamp.replace(/-/g, '/')); // 計算 let difference = (endTimestamp - startTimestamp), timeDifference = (difference > 0 ? difference : 0) / 1000, days = parseInt(timeDifference / 86400), hours = parseInt((timeDifference % 86400) / 3600), minutes = parseInt((timeDifference % 3600) / 60), seconds = parseInt(timeDifference % 60); return { days, hours, minutes, seconds } };
問題在於後臺給個人是時間字符串,咱們須要轉爲時間戳後計算,可是安卓和ios
轉換時會有不一樣如上代碼iOS
中Date.parse(endTimestamp)
轉爲時間戳會報錯,兼容性方法Date.parse(endTimestamp.replace(/-/g, '/'))
小程序