如何使用 mysql 提供的日期获取“时间前”? [关闭]
Posted
技术标签:
【中文标题】如何使用 mysql 提供的日期获取“时间前”? [关闭]【英文标题】:How do I get "time ago" with a date provided by mysql? [closed] 【发布时间】:2021-03-22 23:13:50 【问题描述】:我搜索了一些流行的时间解析和格式化库的文档,例如 Day.js
和 date-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 提供的日期获取“时间前”? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章