首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将日期与时刻进行比较

如何将日期与时刻进行比较
EN

Stack Overflow用户
提问于 2016-11-20 14:00:31
回答 2查看 3K关注 0票数 0

我正在尝试比较从数据库(firebase)到现在的日期。我正在使用moment.js,但它不起作用。我认为这与时区(或UTC+01:00)有关.

举例说明。

  • date1:“2016-11-20T14:00”
  • 现在:"2016-11-20T14:49:20+01:00“

我现在与moment()进行比较,如下所示:

代码语言:javascript
运行
复制
var date1 = moment("2016-11-20T14:00:00");
moment(date1).isSameOrAfter( moment() ) // returns true

对比正好是一个小时..。我怎么才能解决这个问题?在跨时区存储和比较日期方面有什么最佳做法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-20 14:28:22

日期应始终保存在UTC。如果使用字符串,请键入ISO格式的UTC日期时间值。

因此,在保存从客户端时区转换为UTC和从UTC转换到客户端时区时。

应该对同一时区中的两个日期进行比较。

如果数据库值以UTC为单位,则必须在创建矩对象时解析为.utc()。

代码语言:javascript
运行
复制
moment.utc("2016-11-20T14:00:00");

将当前值更改为UTC,然后再进行比较。

代码语言:javascript
运行
复制
moment.(date1).utc()

或者,您可以将数据库值从UTC更改为本地值。

代码语言:javascript
运行
复制
 moment.utc("2016-11-20T14:00:00").local()

保持当前值不变,然后再进行比较。

票数 1
EN

Stack Overflow用户

发布于 2016-11-20 14:42:14

您无法将存储在Firebase中的日期与now()进行比较,因为它缺乏有关您的时区的信息。

您可以使用Firebase.ServerValue.TIMESTAMP存储日期

例如:

date1: Firebase.ServerValue.TIMESTAMP

这将节省Firebase数据库服务器在Unix毫秒(自Unix时代以来的时间,以毫秒为单位)的时间。

然后,您可以与new Date().getTime()进行比较,这将给您的设备时间(以Unix毫秒为单位)。

例如:

代码语言:javascript
运行
复制
if(new Date().getTime() >= date1) {
    //do something
}

希望它有帮助:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40704910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档