如何在javascript中区分未知格式的两个日期?

时间:2017-07-20 14:27:42

标签: javascript

我从服务器那里得到一个日期作为String:2017-01-23T16:08:45.742Z。我想找出天数与当前日期(或精确地,当前时间)之间的差异。我可以单独提取日期(没有时间)并检查,但我需要根据提供的时间和时间精确答案。当前时间。

我如何实现这一目标?

3 个答案:

答案 0 :(得分:1)

应该很容易....



var dateFromServer = '2017-01-23T16:08:45.742Z'
var msInDay = 1000 * 60 * 60 * 24
var difference = (new Date(dateFromServer) - Date.now()) / msInDay
document.write('difference = ' + difference + ' days')




答案 1 :(得分:0)

该日期格式类似于ISO_8061。 https://en.wikipedia.org/wiki/ISO_8601

使用Date对象获取今天和另一个日期之间的差异(以毫秒为单位),然后除以一天中的毫秒数。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

下面的代码可以压缩成一行,但我想要明确。



let date = "2017-01-23T16:08:45.742Z";

let d1 = new Date(date); // given date

let today = new Date(); // today's date

let diff = (d1 - today); // difference in milliseconds

let days = diff / 8.64e+7; // divide difference by 1 day in milliseconds

console.log(days)




答案 2 :(得分:0)

澄清点:如果我理解正确,那么您实际上是想在不同格式的两个日期之间取得差异,而不是未知格式的两个日期。这样更容易。

此外,看起来您的服务器字符串已经以ISO格式存储,这再次使这更容易。

我建议您查看JavaScript Date object。我相信在这种情况下你最好的选择是这样的:

// Your string from the server
var data_from_server = '2017-01-23T16:08:45.742Z';

// Create a new Date() object using the ISO string provided by your server
var olddate = new Date(data_from_server);

// Create a new empty Date() object, which should default to the current time
var currentdate = new Date();

// Subtract the two
var dif = currentdate.getTime() - olddate.getTime();

// Alert the result
alert(dif);