【问题标题】:Moment.js fromNow() a few seconds too earlyMoment.js fromNow() 早了几秒钟
【发布时间】:2016-05-15 07:16:33
【问题描述】:

我在使用 moment.js 的“fromNow()”函数来格式化时间时遇到问题,例如“几秒钟前”、“一小时前”等。

它工作得很好,除了早了几秒钟,这几乎总是不引人注意,但如果我在数据库中创建一个条目并立即刷新我的页面,它会告诉我我正在查看的条目已创建“几秒钟内”(这显然是不可能的)。

这是我用来返回时间前文本的代码...

moment(create_date_from_mysql_db  + " +0000", "YYYY-MM-DD HH:mm:ss Z").fromNow()

(其中 create_date_from_mysql_db 将类似于:“2016-02-04 23:05:25”)

有什么想法我可能在这里做错了吗?我从另一个 stackoverflow 帖子中获取了确切的格式参数,因为我看到了数据库和浏览器时间之间的差异。现在我只需要找到一种方法来解决这几秒钟的最终差异——即使是像在计算中增加几秒钟这样的黑客解决方案我也可以!感谢您的任何想法。

【问题讨论】:

  • fromNow 正如它所说 - 'in a few seconds' 将在添加记录后不超过 45 秒内显示

标签: javascript date datetime momentjs


【解决方案1】:

如果数据库在不同的服务器上,这是完全有可能的——这是由于一台或两台机器没有同步它们的时钟造成的。在您的情况下,听起来您机器上的时钟(运行浏览器的地方)比服务器晚了几秒钟。

也许this question 的答案会有所帮助。

【讨论】:

  • 感谢 searlea - 所以既然我可以拥有来自世界各地的用户浏览器,但系统时间略有不同,那么我基本上无能为力吗?或者在我的计算中至少增加 30 秒左右是否有意义,这样我就有理由相信没有人会看到未来创造的东西? (如果是这样,任何关于如何实现这一目标的想法将不胜感激!)
  • 附注为了其他查看这篇文章的人的利益,这里是黑客解决方案...moment(create_date_from_mysql_db + " +0000", "YYYY-MM-DD HH:mm:ss Z").subtract(20,'s') .fromNow();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
  • 1970-01-01
  • 2022-01-27
  • 1970-01-01
  • 2018-07-17
  • 2019-09-15
  • 1970-01-01
相关资源
最近更新 更多