序文
商品取引に関連するいくつかのプロジェクトを開発するとき、それらのほとんどはアクティビティのカウントダウンなどの要件に遭遇します。最近、それらは小規模なプログラムでも発生しています。多くの実装方法がありますが、小規模なプログラムではiOSとAndroidの互換性の問題が発生するため、書き留めます
コード
/**
* 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
}
};
問題
問題は、背景から時間文字列が得られることです。タイムスタンプに変換して計算する必要がありますが、Androidとios
変換は異なります。上記のコードは、タイムスタンプiOS
にDate.parse(endTimestamp)
変換するとエラーを報告します。互換性メソッドDate.parse(endTimestamp.replace(/-/g, '/'))
この記事の複製:Ape 2048→ https : //www.mk2048.com/blog/blog.php ?id=hi2b1k1cbab