如何在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类型。
我找到了解决这个问题的方法: