太强了!这个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 个产品有或多或少的收益。

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

相关推荐
蒲丶公英的约定4 分钟前
Java 8 中的 Stream API 使用指南
后端
tan180°4 分钟前
Linux自行实现的一个Shell(15)
linux·服务器·c++·后端·vim
Surprisec5 分钟前
动手实践YJS:构建你的第一个实时协作文档编辑器
前端·javascript·面试
晴殇i6 分钟前
JavaScript新一代异步写法:不用await,性能提升80%
前端·面试
xiguolangzi7 分钟前
rabbitmq从安装到使用
后端
患得患失9497 分钟前
【前端】【React】useCallback的作用与使用场景总结
前端·javascript·react.js
wordbaby9 分钟前
TanStack Query :现代 Web 应用的异步状态管理利器
前端
拉裤兜子装不下10 分钟前
Java集成esProc 集算器实现联查CSV文件获取结果集
后端
江沉晚呤时11 分钟前
深入解析策略模式在C#中的应用与实现
java·服务器·开发语言·前端·.netcore
Hamm14 分钟前
如何在TypeScript里使用类封装枚举来实现Java的枚举形参倒置
java·前端·typescript