【问题标题】:How do I get "time ago" with a date provided by mysql? [closed]如何使用 mysql 提供的日期获取“时间前”? [关闭]
【发布时间】:2021-03-22 23:13:50
【问题描述】:

我搜索了一些流行的时间解析和格式化库的文档,例如 Day.jsdate-fns,但我并没有真正明白。

我的Node.js 后端查询在我的MySQL 数据库中创建记录的日期时间并将其发送到前端(我使用React)。在前端,我想找到数据库中的日期(看起来像 2020-12-04T15:39:40.000Z 并且已经从 json 解析为 javscript 对象)和当前日期时间之间的时间差。
例如,社交媒体网站上有“postet 2 days ago”之类的内容。
我见过不使用库的解决方案,只是使用香草 javascript,但它们似乎很长,我并没有真正理解它们。我想使用一个简化这一点的库。 您认为最好的方法是什么?

【问题讨论】:

  • 您也可以在 MySQL 查询中使用 DATEDIFF() 函数。它返回两个日期值之间的天数:SELECT DATEDIFF(CURDATE(), 'your_saved_date') as days FROM table ...
  • 您可能已经注意到,在这个站点中,如果您将鼠标悬停在像answered 2 minutes ago 这样的文本字符串上,您会看到一个带有时间戳的工具提示弹出窗口。在我看来,这是不错的 UI 设计。

标签: javascript mysql reactjs datetime date-fns


【解决方案1】:

date-fns 有一个内置的本地化函数来输出这样的字符串:

https://date-fns.org/v2.16.1/docs/formatDistance

所以你可以使用:

formatDistance(
    new Date('2020-12-04T15:39:40.000Z'),
    new Date(),
   { addSuffix: true }
) 

【讨论】:

    【解决方案2】:

    您可以使用Moment.js 库的diff 方法。 你的代码可能是这样的:

    diffDays = currentDate.diff(databaseDate, "days");
    diffString = `posted ${diffDays} days ago`;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-15
      • 2017-08-20
      • 2011-01-30
      • 2010-11-12
      • 1970-01-01
      • 2010-11-04
      • 2011-11-01
      相关资源
      最近更新 更多