2017-06-18 52 views
0

目前我與返回我在這個格式的日期(created_at)的API時這種格式的日期和我可以從new Date()收到的當前日期之間的差異。獲取JS 2個日期之間的差異

而且差應在格式像這樣的例子:

2 hours ago, 10 days ago. 

它是一個內置的功能JS?或者我怎樣才能做出這個計算並以適當的格式得到答案?

請幫忙。

+2

我總是建議'moment.js'這些在JS各種各樣的事情。本身做這件事相當麻煩。 –

+0

你問的問題是重複的。在解析日期:[*爲什麼Date.parse給出不正確的結果?](https://stackoverflow.com/questions/2587345/why-does-date-parse-give-incorrect-results)在獲取日期差異在「友好的「格式:[* Javascript模糊時間(例如'10分鐘前'),精確秒數*](https://stackoverflow.com/questions/11479170/javascript-fuzzy-time-eg-10-minutes-ago-這就是合精確 - 秒)。 – RobG

+0

實際上是一樣的RobG。 請再讀一遍我的問題。我在談論日期時間格式的差異... –

回答

0

下面的代碼將工作,假設dateB在dateA之後,否則差異將是負數,您將不得不處理該問題。

這對你來說可能是一個很好的開端,可悲的是沒有內建的東西,因爲你試圖獲得差異(以毫秒爲單位),並將其轉換爲不同的統一體。

祝你好運,希望它有幫助。

var dateA = new Date("07/06/2017"); 
 
var dateB = new Date("10/06/2017"); 
 

 
var difference = dateB - dateA; 
 

 
var differenceUnit = "milisecond"; 
 

 
if(difference >= 1000) { 
 
\t difference = difference/1000; 
 
\t differenceUnit = "second"; 
 
\t 
 
\t if(difference > 60) { 
 
\t \t difference = difference/60; 
 
\t \t differenceUnit = "minute"; 
 

 
\t \t if(difference > 60) { 
 
\t \t \t difference = difference/60; 
 
\t \t \t differenceUnit = "hour"; 
 

 
\t \t \t if(difference > 24) { 
 
\t \t \t \t difference = difference/24; 
 
\t \t \t \t differenceUnit = "day"; 
 
\t \t \t } 
 
\t \t } 
 
\t } 
 
} 
 

 
difference = difference.toFixed(0); 
 

 
console.log("difference is: ", difference, (difference > 1 ? differenceUnit + "s" : differenceUnit))