目前我正在使用JavaScript项目(使用节点的聊天应用程序)。我必须显示时间和日期以及聊天消息。如果今天收到消息,只需要显示当前时间,如果前几天收到消息,则需要显示日期和时间。我目前的问题是,如何将当前日期与收到消息的日期进行比较。为了获得当前日期,我使用了bleow函数
var dt = new Date();
以上代码将当前日期返回为
2017年5月4日星期四10:27:12 GMT + 0530(IST)
但是从mySql db获取的消息日期如下:
2017-05-04T04:26:37.000Z
我没有任何条款告诉后端开发人员更改他们发送的日期格式。所以现在我该怎么办? 我要做的就是这样
if(dt>historyDate){
// print the time only
}
else{
//print date and time
}
在上面的代码中,dt是当前的日期和时间,historyDate是从DB发送的日期和时间。 那么如何比较这两个日期呢? 如果需要更多细节,请发表评论。
答案 0 :(得分:2)
只需使用Date.parse 它返回自1970年1月1日以来的毫秒数
var t1 = Date.parse("2017-05-04T04:26:37.000Z") // returns 1493871997000
console.log(t1);
var t2 = Date.parse("Thu May 04 2017 10:27:12 GMT+0530") // returns 1493873832000
console.log(t2);
然后你可以继续比较两个值,因为它们都是数字。
答案 1 :(得分:0)
我已经创建了一个用于发布时间查找的JavaScript函数。它将有助于找到您的不同。它们会发现与发布时间和当前时间不同。getTime()
获得毫秒然后通过{{1}它会找到差异
var d = new Date("2017-05-04T04:26:37.000Z")
console.log(timecheck(d.getTime()))
function timecheck(data) {
data = Number(data);
var m = ['Jan', 'Feb', 'Mar', 'Aprl', 'May', 'Jun', 'July', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var w = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
var res = "";
var d = Date.now();
var c = d - data;
x = c / 1000;
seconds = Math.floor(x % 60);
x /= 60
minutes = Math.floor(x % 60);
x /= 60
hours = Math.floor(x % 24);
x /= 24
days = Math.floor(x);
if (days > 0) {
res = ' yesterday';
if (days > 1) {
var n = new Date(data);
res = m[n.getMonth()] + ' ' + n.getDate() + ' ' + n.getFullYear() + ' ' + w[n.getDay()];
}
} else if (hours > 0) {
res = hours + ' hours ago';
} else if (minutes > 0) {
res = minutes + ' minutes ago';
} else if (seconds > 0) {
res = seconds + ' seconds ago';
} else {
res = 'Justnow'
}
return 'Posted ' + res;
}

答案 2 :(得分:0)
2017-05-04T04:26:37.000Z采用已知且可接受的格式。所以你需要做的就是:
var otherDt = new Date("2017-05-04T04:26:37.000Z");
var today = new Date();
if(today.getTime() > otherDt.getTime()){
// print the time only
}
else{
//print date and time
}
答案 3 :(得分:0)
这将解决您的问题
var x= "2017-05-04T04:26:37.000Z"; // your received date string
var currentDate = new Date();
var historyDate = new Date(x)
var historyDateNoTime = historyDate.setHours(0,0,0,0);
var currentDateNoTime = currentDate.setHours(0,0,0,0);
if(currentDateNoTime === historyDateNoTime )
{
console.log(historyDate.getTime());
}
else if(currentDateNoTime > historyDateNoTime )
{
console.log(historyDate);
}
答案 4 :(得分:0)
您可以使用Date.parse()
传递日期字符串并以毫秒为单位获取日期表示。然后比较两个解析日期。
var dt = Date.parse("Thu May 04 2017 10:27:12 GMT+0530 (IST)");
var fromDB = Date.parse("2017-05-04T04:26:37.000Z");
if (dt > fromDB) {
console.log("dt is greater than date from database");
} else {
console.log("database date is greater than dt");
}

答案 5 :(得分:0)
使用Date.parse()方法从服务器(sql date)获得的第一个解析日期。 然后创建日期变量,该日期变量将服务于当天开始的时间,并使用dateObj.setHourse(0,0,0,0)设置所需时间(当前时间的开始)。然后从dayBeginning获取毫秒,并将其与从服务器获得的时间进行比较。
<div id="received-time">
</div>
&#13;
Traceback (most recent call last):
File "classifier-plot.py", line 115, in <module>
Z = Z.reshape(xx.shape)
ValueError: cannot reshape array of size 260 into shape (150,1750)
&#13;
答案 6 :(得分:0)
首先取当前日期
var currentDate=new Date();
我们已经有聊天消息的日期,格式为以上类型。为此,我们使用
var date1=new Date(historyDate);
现在我们有相同格式的当前日期和历史日期
然后从每个日期获得年,月和日
var date2=date1.getDate() + "-" + (date1.getMonth()+1) + "-" + date1.getFullYear();
var date3=currentDate.getDate() + "-" + (currentDate.getMonth()+1) + "-" + currentDate.getFullYear();
现在我们得到答案(例子)
date2 = 4-5-2017 date3 = 2-5-2017
现在我们可以将date2和date3比作bleow
if(date2==date3){
//print current time only
}
else{
//print date along with time
}