1. 程式人生 > >js 計算兩個時間的時間差

js 計算兩個時間的時間差

寫在前面:

如題,就像題目說的需要計算出時間差,雖然不太難,但這個需求經常會在專案中遇到的,我在這邊做一下整理,希望能夠儘量全的整理出來。有需要的朋友可以做一下參考,喜歡的可以點波贊,或者關注一下,希望可以幫到大家。

計算時間差原理:

getTime()方法

方法定義: getTime() 方法可返回距 1970 年 1 月 1 日之間的毫秒數。

通常我們計算時間差都是通過獲取兩個時間資料,然後分別使用getTime()方法返回與固定的1970 年 1 月 1 日的時間差,通過對返回毫秒數的差,換算成時間單位,得出兩個時間的時間差。

開始操作:

首先你會有一串初始的時間資料,然後通過 new Date(你的時間資料),將你的資料轉成Date物件

的形式。

    var t1="2017/08/28 04:56:38"; //資料
    var dateBegin = new Date(t1);//轉化為Date物件的形式
    //Mon Aug 28 2017 04:56:38 GMT+0800 (中國標準時間)  這裡就是Date物件的資料形式

時間格式

這裡的話就要注意一下後端給的時間資料格式的問題,比如下面兩種:

    第一種:"2017/08/28 04:56:38"//這種格式不用再進行處理
    第二種:"2017-08-01 18:56:38"//這種格式就要進行處理

因為new Date()方法不能處理第二種資料,所以我們這裡需要將第二種資料格式轉化為第一種資料的格式

     var t1="2017-05-12 00:13:53";
     var dateBegin = new Date(d1.replace(/-/g, "/"));//replace方法將-轉為/

不知道大家是什麼情況,反正因為我們後端給我的資料就是第二種的,所以我會提一下這個東西(捂臉)。

另一個時間資料:

既然是時間差的話,就肯定要有兩個資料,不然怎麼兩相比較,一般兩個資料中都會有一個當前時間的資料。

      var dateEnd = new Date();//當前時間資料

完整計算時間差(天、小時、分鐘、秒)的程式碼:

先獲取之間的毫秒差,通過毫秒差換算出你所需要的時間單位,然後時間單位之間的換算根據的是他們的倍數關係。

function timeFn(d1) {//di作為一個變數傳進來
    //如果時間格式是正確的,那下面這一步轉化時間格式就可以不用了
    var dateBegin = new Date(d1.replace(/-/g, "/"));//將-轉化為/,使用new Date
    var dateEnd = new Date();//獲取當前時間
    var dateDiff = dateEnd.getTime() - dateBegin.getTime();//時間差的毫秒數
    var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000));//計算出相差天數
    var leave1=dateDiff%(24*3600*1000)    //計算天數後剩餘的毫秒數
    var hours=Math.floor(leave1/(3600*1000))//計算出小時數
    //計算相差分鐘數
    var leave2=leave1%(3600*1000)    //計算小時數後剩餘的毫秒數
    var minutes=Math.floor(leave2/(60*1000))//計算相差分鐘數
    //計算相差秒數
    var leave3=leave2%(60*1000)      //計算分鐘數後剩餘的毫秒數
    var seconds=Math.round(leave3/1000)
    console.log(" 相差 "+dayDiff+"天 "+hours+"小時 "+minutes+" 分鐘"+seconds+" 秒")
    console.log(dateDiff+"時間差的毫秒數",dayDiff+"計算出相差天數",leave1+"計算天數後剩餘的毫秒數"
        ,hours+"計算出小時數",minutes+"計算相差分鐘數",seconds+"計算相差秒數");
}
var t3="2017-08-18 04:56:38";
timeFn(t3);

demo時間差資料截圖

不成熟的計算月、年:

    //這裡的dayDiff就是上文計算出的天數差
    let monthDiff=Math.floor(dayDiff/30);//以30天為一個月不夠精準嚴謹
    //獲取相差的月份
      if (monthDiff<12){
        timeThis=monthDiff+"個月前釋出";//獲取相差的月份
        return
      }
      let yearDiff=Math.floor(monthDiff/12);//獲取相差的年份
      if(yearDiff>=1){
        timeThis=yearDiff+"年前釋出";
        return
      }

當天數相差較大的時候,單純計算天數已經不能滿足需求了,因為我們PM說的統一以30天為一個月的分界線,然後這裡月份的計算情況感覺很複雜的樣子沒有繼續研究下去。

獲取當前月份的天數

    function getDays() {
       //構造當前日期物件
       var date = new Date();
       var year = date.getFullYear();//獲取年份
       var mouth = date.getMonth() + 1;//獲取當前月份
       var days;//定義當月的天數;
       if (mouth == 2) {//當月份為二月時,根據閏年還是非閏年判斷天數
           days = year % 4 == 0 ? 29 : 28;
       }
       else if (mouth == 1 || mouth == 3 || mouth == 5 || mouth == 7 || mouth == 8 || mouth == 10 || mouth == 12) {
           //月份為:1,3,5,7,8,10,12 時,為大月.則天數為31;
           days = 31;
       }
       else {
           //其他月份,天數為:30.
           days = 30;
       }
       return days;
   }

網上找了個獲取當前月份天數的函式,上面的註釋也足夠全,我就一起貼上來,連線在下面。

後話

上面就是本文計算時間差的內容了,希望看完本文能給大家一點幫助。最後一個提示:一般需要處理的資料不會只有一兩個,很可能會給一個數組,你需要處理每個陣列元素的時間資料,這時候建議用forEach()函式遍歷整個陣列。

最後:如需轉載,請放上原文連結並署名。碼字不易,感謝支援!本人寫文章本著交流記錄的心態,寫的不好之處,不撕逼,但是歡迎指點。然後就是希望看完的朋友點個喜歡,也可以關注一下我。
blog網站 and

以上2017.10.15

參考資料:

相關推薦

js計算時間戳的時間差,並轉換為:幾天幾時幾分

function sj() {             //功能:計算兩個時間之間相差多少個小時                 var date = '2013-08-30 16:55:49:173';             date = date.substring(0

js 計算時間時間差

寫在前面: 如題,就像題目說的需要計算出時間差,雖然不太難,但這個需求經常會在專案中遇到的,我在這邊做一下整理,希望能夠儘量全的整理出來。有需要的朋友可以做一下參考,喜歡的可以點波贊,或者關注一下,希望可以幫到大家。 計算時間差原理: getT

js 計算時間戳之間相隔天數

時間戳 sta var color pre div 天數 code class var start=1491789600000;//2017-4-10 10:00 var end=1494381600000;//2017-5-10 10:00 var utc=end-

計算時間時間差

con 計算 default col cond time 比價大小 ole second function GetDateDiff(startTime, endTime, diffType) { //將xxxx-xx-xx的時間格式,轉換為 xxxx/xx/x

oracle資料庫計算時間型別欄位值的時間差,並轉換為合適的時間格式顯示(按時分秒展示)

1.背景    資料庫表名為tablename。其中兩個欄位為startdate(開始時間),closedate(結束時間)。 2.需求    建立試圖,查詢出間隔時間並顯示為自定義的格式。 3.sql語句  select t.*,

Java計算時間時間差

JAVA計算兩個時間的時間差 現在是:2015-07-23 12:59:28 過去是:2015-07-23 09:44:23 要獲得兩個日期差,差的形式為:xx天xx小時xx分xx秒 示例程式碼如下:

iOS 計算時間時間差

- (NSString *)intervalFromLastDate: (NSString *) dateString1 toTheDate:(NSString *) dateString2 { NSArray *timeArray1=[dateString1 co

golang 計算時間時間差

package main import ( "fmt" "time" ) func main() { //Add方法和Sub方法是相反的,獲取t0和t1的時間距離d是使用Sub,將t0加d獲取t1就是使用Add方法 k := time.N

iOS計算時間時間差

/** * 計算剩餘時間 * * @param endTime 結束日期 * * @return 剩餘時間 */ -(NSString *)getCountDownStringW

C語言輸入時間計算時間時間差

#include<stdio.h> int main() { int hour1, minute1; int hour2, minute2; scanf("%d %d",&h

計算時間日期差值(asp.net與js

兩個時間相差多少 .net中的timespan應用2008/11/10 11:54TimeSpan 物件表示時間間隔或持續時間,按正負天數、小時數、分鐘數、秒數以及秒的小數部分進行度量。用於度量持續時間的最大時間單位是天。更大的時間單位(如月和年)的天數不同,因此為保

js計算矩形相交

utf char Y軸 lang cli epo ava log function <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <

moment實現計算時間的差值

說明 mce var console mom moment 分鐘 官方 差值 var m1 = moment(‘2018-08-14 11:00:00‘), m2 = moment(‘2018-08-14 12:10:00‘); console.log(m1)cons

sql server 計算時間 相差的 幾天幾時幾分幾秒

var cas edi ediff date art star start har CAST ( CAST ( DATEDIFF ( ss, StartTime, ConcludeTime ) / ( 60 * 60 * 24 ) AS INT ) AS VARCHAR

PHP計算時間戳之間的日期

function timediff($begin_time, $end_time) { if ($begin_time < $end_time) { $starttime = $begin_time; $endtime = $end_time;

php計算時間相差的天數、小時數、分鐘數、秒數

$startdate="2011-3-15 11:50:00";//開始時間 $enddate="2012-12-12 12:12:12";//結束時間 $date=floor((strtotime($enddate)-strtotime($startdate))/86400); echo "相差天數

js計算日期的天數差值

函數 ber parseint pre days var 毫秒 cti param js計算兩個日期的天數差值 通過兩個日期計算這兩個日期之間的天數差值 /** * 計算天數差的函數,通用 * @param sDate1 * @param sDate2 * @ret

計算時間日期相隔的天數,時,分,秒

/* * 計算時間差/兩個時間日期相隔的天數,時,分,秒 * */ public function diff($begin_time, $end_time ) { if ($begin_time < $end_time ) {

js計算日期差

function timeDifc(start,end){ let starts = new Date(start),ends = new Date(end),message = ''; if (starts.getTime() > ends.getTime())

python 計算時間的月差程式碼

def monthdelta(d1, d2):     delta = 0     while True:         mdays = monthrange(d1.year, d1.month)[1]         d1 += timedelta(days=mdays