js 計算 某個時間 與 現在 的時間差
在消息提示中,經常會用到這條消息是多久之前發送的,這就需要計算消息産生時間和目前時間的時間差,代碼如下:
function getTimeAgo(period) {
var yearLevelValue = * * * * ;
var monthLevelValue = * * * * ;
var dayLevelValue = * * * ;
var hourLevelValue = * * ;
var minuteLevelValue = * ;
var secondLevelValue = ;
function getDifference(period) {
var year = parseInt(getYear(period));
var month = parseInt(getMonth(period - year * yearLevelValue));
var day = parseInt(getDay(period - year * yearLevelValue - month * monthLevelValue));
var hour = parseInt(getHour(period - year * yearLevelValue - month * monthLevelValue - day * dayLevelValue));
var minute = parseInt(getMinute(period - year * yearLevelValue - month * monthLevelValue - day * dayLevelValue - hour * hourLevelValue));
var second = parseInt(getSecond(period - year * yearLevelValue - month * monthLevelValue - day * dayLevelValue - hour * hourLevelValue - minute * minuteLevelValue));
var result = "";
if (year != )result = result + year + "年";
if (month != )result = result + month + "月";
if (day != )result = result + day + "天";
if (hour != ) result = result + hour + "時";
if (minute != ) result = result + minute + "分";
if (second != ) result = result + second + "秒";
function getYear(period) {
return Math.floor(parseInt(period) / yearLevelValue);
}
function getMonth(period) {
return Math.floor(parseInt(period) / monthLevelValue);
}
function getDay(period) {
return Math.floor(parseInt(period) / dayLevelValue);
}
function getHour(period) {
return Math.floor(parseInt(period) / hourLevelValue);
}
function getMinute(period) {
return Math.floor(parseInt(period) / minuteLevelValue);
}
function getSecond(period) {
return Math.floor(parseInt(period) / secondLevelValue);
}
return result;
}
return getDifference(period);
}
以上代碼能夠實作當不足一分鐘的時候隻顯示秒,不足一小時隻顯示分鐘和秒,以此類推。
本文的源代碼源自于http://blog.csdn.net/qq_26744901/article/details/51735988
但是在使用過程中,對原文作者的代碼進行了修改,原文代碼在擷取年月日時分秒的時候使用了如下函數:
function getYear(period) {
return parseInt(period) / yearLevelValue;
}
在實際測試過程中,假定時間戳period=4000時,getYear函數傳回的應該是0,但是在Mac OS safari和firefox浏覽器中執行結果傳回1,應該是浮點數轉整數時,出現的計算問題,是以後續計算存在問題,但當period>30000後,函數傳回值為0,不了解是否是浏覽器js問題,是以将上述函數修改成為計算結果向下取整。
再次對原文作者表示感謝。