2017-06-18 50 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))