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