前言
在開發一些有關商品交易類的專案時,多半會遇到活動倒數計時之類的需求,最近也是在小程式中遇到,實現方法很多,但是在小程式中遇到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, `/`))