太强了!这个js库有200多个日期时间函数

大家好,我是农村程序员,独立开发者,前端之虎陈随易。

这是我的个人网站:chensuiyi.me

我的所以文章都可以在我的个人网站找到,欢迎访问,也欢迎与我交朋友。


笔者在多年的职业生涯中,用过很多 js 日期时间操作库,如今唯爱这一个,它就是 date-fns

这是一个拥有 200多个 日期时间函数的集合,堪称日期时间中的 Lodash

支持按需导出,最大可能地降低打包体积,也支持函数式,链式调用风格。

当前维护非常积极,star 数 35k,提交了 2000多次,近 400个 代码贡献者,被超过 400万 个项目所依赖使用。

2024年9月份发布了 v4 大版本,支持不同时区的时间操作和互转等,特点如下图。

话不多说,看几个示例:

格式化

js 复制代码
import { format, formatDistance, formatRelative, subDays } from 'date-fns';

format(new Date(), "'Today is a' eeee");
//=> "Today is a Saturday"

formatDistance(subDays(new Date(), 3), new Date(), { addSuffix: true });
//=> "3 days ago"

formatRelative(subDays(new Date(), 3), new Date());
//=> "last Friday at 7:26 p.m."

国际化

js 复制代码
import { formatRelative, subDays } from 'date-fns';
import { es, ru } from 'date-fns/locale';

formatRelative(subDays(new Date(), 3), new Date());
//=> "last Friday at 7:26 p.m."

formatRelative(subDays(new Date(), 3), new Date(), { locale: es });
//=> "el viernes pasado a las 19:26"

formatRelative(subDays(new Date(), 3), new Date(), { locale: ru });
//=> "в прошлую пятницу в 19:26"

组合与函数式

js 复制代码
import { addYears, formatWithOptions } from 'date-fns/fp';
import { eo } from 'date-fns/locale';

const addFiveYears = addYears(5);

const dateToString = formatWithOptions({ locale: eo }, 'D MMMM YYYY');

const dates = [
    new Date(2017, 0, 1),
    new Date(2017, 1, 11),
    new Date(2017, 6, 2)
];

const toUpper = (arg) => String(arg).toUpperCase();

const formattedDates = dates.map(addFiveYears).map(dateToString).map(toUpper);
//=> ['1 JANUARO 2022', '11 FEBRUARO 2022', '2 JULIO 2022']

可以看到,这操作,非常地 Lodash

不过呢,官方文档,笔者每次查看都感觉有点不方便。

所以,特意根据官方文档制作了一份中文文档,点击查看 date-fns 中文文档

不过,笔者目前还没翻译完毕,还在持续进行中,感兴趣的朋友可以先提前关注一下,也欢迎与我微信交流探讨。

那么关于 date-fns 的安利,基本就结束了,本身就是一个函数库而已,没有太多可以细说的地方。

由于笔者比较八卦,我们来看一看 date-fns 周边的数据和信息。

日期时间的操作,是一个非常基础且重要的领域。

果不其然地,这个项目的赞助者非常之多,不乏很多出名的产品和公司。

截至目前,共收到了近 23 万美元的赞助。

项目的发起者是 Sasha,是一个独立开发者,自2017年起,就一直全职在做开源项目,目前和一家人生活在新加坡。

笔者发现,国外的独立开发者,不依托于公司而具备赚钱和生存能力的人有不少。

这确实是一个非常不错的生活方式,可以自由地选择自己觉得舒适的生活。

笔者目前也是独立开发者,2024年,是笔者做自由职业的地 4 第四年,做全职独立开发的第1年,目前超过 10 个产品有或多或少的收益。

如果对独立开发感兴趣,欢迎与我交流探讨。

相关推荐
沉默璇年9 分钟前
react中useMemo的使用场景
前端·react.js·前端框架
yqcoder15 分钟前
reactflow 中 useNodesState 模块作用
开发语言·前端·javascript
2401_8827275725 分钟前
BY组态-低代码web可视化组件
前端·后端·物联网·低代码·数学建模·前端框架
心仪悦悦41 分钟前
Scala中的集合复习(1)
开发语言·后端·scala
会发光的猪。1 小时前
css使用弹性盒,让每个子元素平均等分父元素的4/1大小
前端·javascript·vue.js
天下代码客1 小时前
【vue】vue中.sync修饰符如何使用--详细代码对比
前端·javascript·vue.js
代码小鑫1 小时前
A043-基于Spring Boot的秒杀系统设计与实现
java·开发语言·数据库·spring boot·后端·spring·毕业设计
猫爪笔记1 小时前
前端:HTML (学习笔记)【1】
前端·笔记·学习·html
真心喜欢你吖1 小时前
SpringBoot与MongoDB深度整合及应用案例
java·spring boot·后端·mongodb·spring
激流丶1 小时前
【Kafka 实战】Kafka 如何保证消息的顺序性?
java·后端·kafka