Javascript 比较两个不同格式的日期

Javascript 比较两个不同格式的日期,javascript,jquery,date,Javascript,Jquery,Date,目前我正在处理一个JavaScript项目(使用node的聊天应用程序)。我必须显示时间和日期以及聊天信息。如果消息是在今天收到的,则只需显示当前时间;如果消息是在前几天收到的,则需要显示日期和时间。我目前的问题是,如何将当前日期与消息接收日期进行比较。为了获取当前日期,我使用了bleow函数 var dt = new Date(); 上述代码将当前日期返回为 2017年5月4日星期四10:27:12 GMT+0530(IST) 但是从mySql数据库获取的消息日期如下: 2017-05-04

目前我正在处理一个JavaScript项目(使用node的聊天应用程序)。我必须显示时间和日期以及聊天信息。如果消息是在今天收到的,则只需显示当前时间;如果消息是在前几天收到的,则需要显示日期和时间。我目前的问题是,如何将当前日期与消息接收日期进行比较。为了获取当前日期,我使用了bleow函数

var dt = new Date();
上述代码将当前日期返回为

2017年5月4日星期四10:27:12 GMT+0530(IST)

但是从mySql数据库获取的消息日期如下:

2017-05-04T04:26:37.000Z

我没有任何规定告诉后端开发人员更改他们发送的日期格式。那么现在我能做什么呢? 我要做的就是这样

if(dt>historyDate){
   // print the time only
   }
else{
   //print date and time
}
在上面的代码中,dt是当前日期和时间,historyDate是DB发送的日期和时间。 那么我如何比较这两个日期呢? 如果需要更多详细信息,请发表评论。

只需使用 它以毫秒为单位返回自1970年1月1日以来的日期

var t1=Date.parse(“2017-05-04T04:26:37.000Z”)//返回1493871997000
控制台日志(t1);
var t2=Date.parse(“2017年5月4日星期四10:27:12 GMT+0530”)//返回1493873832000
控制台日志(t2)只需使用
它以毫秒为单位返回自1970年1月1日以来的日期

var t1=Date.parse(“2017-05-04T04:26:37.000Z”)//返回1493871997000
控制台日志(t1);
var t2=Date.parse(“2017年5月4日星期四10:27:12 GMT+0530”)//返回1493873832000

控制台日志(t2)我已经为发布时间查找创建了一个JavaScript函数。它将帮助查找您的差异。它们将查找与发布时间和当前时间不同的内容。获取毫秒,然后通过
timecheck()
传递。它将找到差异

var d=新日期(“2017-05-04T04:26:37.000Z”)
log(timecheck(d.getTime()))
功能时间检查(数据){
数据=数字(数据);
var m=[‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’、‘七月’、‘八月’、‘九月’、‘十月’、‘十一月’、‘十二月’];
变量w=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
var res=“”;
var d=Date.now();
var c=d-数据;
x=c/1000;
秒=数学地板(x%60);
x/=60
分钟=数学楼层(x%60);
x/=60
小时=数学楼层(x%24);
x/=24
天数=数学楼层(x);
如果(天数>0){
res=‘昨天’;
如果(天数>1){
var n=新日期(数据);
res=m[n.getMonth()]+''+n.getDate()+''+n.getFullYear()+''+w[n.getDay()];
}
}否则,如果(小时数>0){
res=小时数+小时前;
}否则,如果(分钟>0){
res=分钟+分钟前;
}否则,如果(秒>0){
res=秒+秒前;
}否则{
res='Justnow'
}
返回“已发布”+res;

}
我已经创建了一个JavaScript函数用于发布时间查找。它将帮助查找您的差异。它们将查找与发布时间和当前时间不同的内容。获取毫秒,然后通过
timecheck()
传递。它将找到差异

var d=新日期(“2017-05-04T04:26:37.000Z”)
log(timecheck(d.getTime()))
功能时间检查(数据){
数据=数字(数据);
var m=[‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’、‘七月’、‘八月’、‘九月’、‘十月’、‘十一月’、‘十二月’];
变量w=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
var res=“”;
var d=Date.now();
var c=d-数据;
x=c/1000;
秒=数学地板(x%60);
x/=60
分钟=数学楼层(x%60);
x/=60
小时=数学楼层(x%24);
x/=24
天数=数学楼层(x);
如果(天数>0){
res=‘昨天’;
如果(天数>1){
var n=新日期(数据);
res=m[n.getMonth()]+''+n.getDate()+''+n.getFullYear()+''+w[n.getDay()];
}
}否则,如果(小时数>0){
res=小时数+小时前;
}否则,如果(分钟>0){
res=分钟+分钟前;
}否则,如果(秒>0){
res=秒+秒前;
}否则{
res='Justnow'
}
返回“已发布”+res;

}
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
 }

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
 }

这会解决你的问题

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

    }   

这会解决你的问题

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

    }   

您可以使用
Date.parse()
传入日期字符串并获取以毫秒为单位的日期表示形式。然后比较两个解析的日期

var dt=Date.parse(“2017年5月4日星期四10:27:12 GMT+0530(IST)”;
var fromDB=日期解析(“2017-05-04T04:26:37.000Z”);
如果(dt>fromDB){
log(“dt大于数据库中的日期”);
}否则{
console.log(“数据库日期大于dt”);

}
您可以使用
Date.parse()
传入日期字符串并以毫秒为单位获取日期表示形式。然后比较两个解析的日期

var dt=Date.parse(“2017年5月4日星期四10:27:12 GMT+0530(IST)”;
var fromDB=日期解析(“2017-05-04T04:26:37.000Z”);
如果(dt>fromDB){
log(“dt大于数据库中的日期”);
}否则{
console.log(“数据库日期大于dt”);

}
首先使用date.parse()方法解析从服务器(sql日期)获得的日期。 然后创建日期变量,该变量将服务于一天开始的时间,并使用dateObj.setHourse(0,0,0,0)设置所需的时间(当前时间的开始)。然后只需从一天开始计算毫秒数,并将其与您从服务器获得的时间进行比较

const-element=document.getElementById('received-time');
const timeString=“2017-05-04T04:26:37.000Z”;
const time=Date.parse(timeString);
const daybeating=新日期();
天开始。设定小时数(0,0,0,0);
const daybeaginingtime=daybeaging.getTime();
如果(时间>天开始){
element.innerHTML='today';
}否则{
element.innerHTML='不是今天'
}

在您从服务器获得的第一个解析日期(sql日期)时
var date2=date1.getDate()  + "-" + (date1.getMonth()+1) + "-" + date1.getFullYear();
 var date3=currentDate.getDate()  + "-" + (currentDate.getMonth()+1) + "-" + currentDate.getFullYear();
if(date2==date3){
    //print current time only
}
else{
   //print date along with time
}