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

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

相关推荐
goTsHgo1 分钟前
在 Spring Boot 的 MVC 框架中 路径匹配的实现 详解
spring boot·后端·mvc
waicsdn_haha13 分钟前
Java/JDK下载、安装及环境配置超详细教程【Windows10、macOS和Linux图文详解】
java·运维·服务器·开发语言·windows·后端·jdk
web1478621072317 分钟前
C# .Net Web 路由相关配置
前端·c#·.net
m0_7482478018 分钟前
Flutter Intl包使用指南:实现国际化和本地化
前端·javascript·flutter
飞的肖21 分钟前
前端使用 Element Plus架构vue3.0实现图片拖拉拽,后等比压缩,上传到Spring Boot后端
前端·spring boot·架构
Q_192849990623 分钟前
基于Spring Boot的摄影器材租赁回收系统
java·spring boot·后端
良许Linux28 分钟前
0.96寸OLED显示屏详解
linux·服务器·后端·互联网
青灯文案129 分钟前
前端 HTTP 请求由 Nginx 反向代理和 API 网关到后端服务的流程
前端·nginx·http
m0_7482548833 分钟前
DataX3.0+DataX-Web部署分布式可视化ETL系统
前端·分布式·etl
求知若饥40 分钟前
NestJS 项目实战-权限管理系统开发(六)
后端·node.js·nestjs