Javascript 如何比较日期和时间
我试图将数据库(firebase)中的日期与现在进行比较。我正在使用moment.js,但它不起作用。我认为这与时区(或UTC+01:00)有关 例如Javascript 如何比较日期和时间,javascript,date,momentjs,Javascript,Date,Momentjs,我试图将数据库(firebase)中的日期与现在进行比较。我正在使用moment.js,但它不起作用。我认为这与时区(或UTC+01:00)有关 例如 日期1:“2016-11-20T14:00:00” 现在:“2016-11-20T14:49:20+01:00” 我现在使用moment()进行比较,如下所示: var date1 = moment("2016-11-20T14:00:00"); moment(date1).isSameOrAfter( moment() ) // retur
- 日期1:“2016-11-20T14:00:00”
- 现在:“2016-11-20T14:49:20+01:00”
moment()
进行比较,如下所示:
var date1 = moment("2016-11-20T14:00:00");
moment(date1).isSameOrAfter( moment() ) // returns true
比较正好是一个小时后。。。我怎样才能解决这个问题?还有:在跨时区存储和比较日期方面是否有最佳做法。日期应始终以UTC格式保存。如果使用字符串,请以ISO格式键入UTC日期时间值 因此,在保存从客户机时区转换为UTC时,以及在检索从UTC转换为客户机时区时 应在同一时区的两个日期之间进行比较 如果数据库值以UTC为单位,则在创建矩对象时必须解析为.UTC()
moment.utc("2016-11-20T14:00:00");
比较之前,将NOW值更改为UTC
moment.(date1).utc()
或者,您可以将数据库值从UTC更改为local
moment.utc("2016-11-20T14:00:00").local()
保持比较前的NOW值不变。日期应始终以UTC格式保存。如果使用字符串,请以ISO格式键入UTC日期时间值
moment.(date1).utc()
因此,在保存从客户机时区转换为UTC时,以及在检索从UTC转换为客户机时区时
应在同一时区的两个日期之间进行比较
如果数据库值以UTC为单位,则在创建矩对象时必须解析为.UTC()
moment.utc("2016-11-20T14:00:00");
比较之前,将NOW值更改为UTC
moment.(date1).utc()
或者,您可以将数据库值从UTC更改为local
moment.utc("2016-11-20T14:00:00").local()
保持比较前的NOW值不变。您无法将存储在Firebase中的日期与NOW()进行比较,因为它缺少有关时区的信息
moment.(date1).utc()
您可以使用
例如:
if(new Date().getTime() >= date1) {
//do something
}
date1:Firebase.ServerValue.TIMESTAMP
这将通过Firebase数据库服务器以Unix毫秒为单位(自Unix纪元以来的时间,以毫秒为单位)节省您的时间
然后您可以与new Date().getTime()
进行比较,这将为您的设备提供以Unix毫秒为单位的时间
例如:
if(new Date().getTime() >= date1) {
//do something
}
希望有帮助:)您无法将存储在Firebase中的日期与now()进行比较,因为它缺少有关您时区的信息 您可以使用 例如:
if(new Date().getTime() >= date1) {
//do something
}
date1:Firebase.ServerValue.TIMESTAMP
这将通过Firebase数据库服务器以Unix毫秒为单位(自Unix纪元以来的时间,以毫秒为单位)节省您的时间
然后您可以与new Date().getTime()
进行比较,这将为您的设备提供以Unix毫秒为单位的时间
例如:
if(new Date().getTime() >= date1) {
//do something
}
希望有帮助:)请显示
时刻(“2016-11-20T16:00:00”)的结果。format()
。我猜您电脑的时区不是+01:00
“2016-11-20T14:00:00”将根据主机时区偏移量进行解析。您应该始终将字符串格式传递给解析器,否则这只是猜测。请显示时刻(“2016-11-20T16:00:00”)的结果。format()
。我猜您电脑的时区不是+01:00
“2016-11-20T14:00:00”将根据主机时区偏移量进行解析。您应该始终将字符串格式传递给解析器,否则这只是猜测。它在将日期从firebase转换为本地时间时起作用:矩.utc(“2016-11-20T14:00:00”).local()。它在将日期从firebase转换为本地时间时起作用:矩.utc(“2016-11-20T14:00:00”).local()。