用于人类友好的相对日期格式的 Javascript 库

Javascript library for human-friendly relative date formatting(用于人类友好的相对日期格式的 Javascript 库)
本文介绍了用于人类友好的相对日期格式的 Javascript 库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想以人性化的格式显示一些相对于当前日期的日期.

I'd like to display some dates as relative to the current date in a human-friendly format.

人类友好的相对日期示例:

Examples of human-friendly relative dates:

  • 10 秒前
  • 20 分钟后
  • 1 天前
  • 5 周前
  • 2 个月前

基本上忠实地保留最高数量级(并且优先考虑,仅在超过其中 2 个单位时上调单位 - 5 周而不是 1 个月).

Basically faithfully preserving the highest order of magnitude (and by preference, only shifting up units when passing 2 of those units - 5 weeks instead of 1 month).

虽然我可以接受一个控制较少且日期更友好的图书馆,例如:

Though I could live with a library that had less control and even more friendly dates like:

  • 昨天
  • 明天
  • 上周
  • 几分钟前
  • 几个小时后

有任何流行的图书馆吗?

Any popular libraries for this?

推荐答案

自从我写了这个答案,一个众所周知的可用库是 moment.js.

Since I wrote this answer, a well known library available is moment.js.

有可用的库,但自己实现它很简单.只需使用少数几个条件.

There are libraries available, but it is trivial to implement it yourself. Just use a handful of conditions.

假设 date 是一个实例化的 Date 对象,用于您要与之进行比较的时间.

Assume date is an instantiated Date object for the time you want to make a comparison against.

// Make a fuzzy time
var delta = Math.round((+new Date - date) / 1000);

var minute = 60,
    hour = minute * 60,
    day = hour * 24,
    week = day * 7;

var fuzzy;

if (delta < 30) {
    fuzzy = 'just then.';
} else if (delta < minute) {
    fuzzy = delta + ' seconds ago.';
} else if (delta < 2 * minute) {
    fuzzy = 'a minute ago.'
} else if (delta < hour) {
    fuzzy = Math.floor(delta / minute) + ' minutes ago.';
} else if (Math.floor(delta / hour) == 1) {
    fuzzy = '1 hour ago.'
} else if (delta < day) {
    fuzzy = Math.floor(delta / hour) + ' hours ago.';
} else if (delta < day * 2) {
    fuzzy = 'yesterday';
}

您需要调整它以处理未来的日期.

You would need to adapt this to handle future dates.

这篇关于用于人类友好的相对日期格式的 Javascript 库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)