Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中获得两个格式未知的日期之间的差异?_Javascript - Fatal编程技术网

如何在javascript中获得两个格式未知的日期之间的差异?

如何在javascript中获得两个格式未知的日期之间的差异?,javascript,Javascript,我从服务器上获取一个日期字符串,如下所示:2017-01-23T16:08:45.742Z。我想找出这个日期和当前日期(确切地说,是当前时间)之间的天数差异。我可以单独提取日期(没有时间)并进行检查,但我需要基于提供的时间和当前时间的精确答案 如何实现这一点?应该很容易。。。。 var dateFromServer='2017-01-23T16:08:45.742Z' 变量msInDay=1000*60*60*24 变量差异=(新日期(dateFromServer)-Date.now())/ms

我从服务器上获取一个日期字符串,如下所示:
2017-01-23T16:08:45.742Z
。我想找出这个日期和当前日期(确切地说,是当前时间)之间的天数差异。我可以单独提取日期(没有时间)并进行检查,但我需要基于提供的时间和当前时间的精确答案

如何实现这一点?

应该很容易。。。。
var dateFromServer='2017-01-23T16:08:45.742Z'
变量msInDay=1000*60*60*24
变量差异=(新日期(dateFromServer)-Date.now())/msInDay

document.write('difference='+difference+'days')
该日期格式类似于ISO_8061

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

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

let date=“2017-01-23T16:08:45.742Z”;
设d1=新日期(日期);//给定日期
让今天=新日期();//今天的日期
让diff=(d1-今天);//毫秒差
设天数=diff/8.64e+7;//以毫秒为单位将差值除以1天

console.log(天)
澄清点:如果我理解正确,您实际上是在尝试获取两个不同格式的日期之间的差异,而不是两个未知格式的日期之间的差异。那容易多了

此外,您的服务器字符串似乎已经以ISO格式存储,这再次使这种方式更容易

我建议你看一下这本书。我相信在这种情况下,你最好的选择是:

// 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);

是什么让你认为这是一种未知的格式?这正是JavaScript中的
Date
对象明确理解的格式。该日期格式类似于ISO 8601。@jmargolisvt和@JamesThorpe我可以看出这是JS中正确的日期格式。然而,我感到困惑,因为当我在在线JS date format tester中尝试该格式时,我遇到了一个错误:
非法模式字符T
除了一个小的更改之外,所有答案都是正确的。当我试图减去日期时,我遇到了一个错误:
算术运算的左侧必须是'any'、'number'或enum类型。
我找到了解决这个问题的方法: