如何使用 mysql 提供的日期获取“时间前”? [关闭]

Posted

技术标签:

【中文标题】如何使用 mysql 提供的日期获取“时间前”? [关闭]【英文标题】:How do I get "time ago" with a date provided by mysql? [closed] 【发布时间】: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 设计。 【参考方案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`;

【讨论】:

以上是关于如何使用 mysql 提供的日期获取“时间前”? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用mysql计算两个日期之间的时间差

MySQL如何获取日期表示去年的今天

如何使用mysql正确获取日期列当前日期的所有数据库

如何根据日期列中的月份从 SQLite 中获取数据

mysql 如何获取数据表中离当前日期最近的数据

我在表单中使用了日期范围选择器如何禁用从 MySQL 数据库中获取的特定日期范围