likes
comments
collection
share

ES2024 Temporal API——JavaScript时间与日期处理的革命性新篇章

作者站长头像
站长
· 阅读数 44

Temporal 的由来

《2022 年 JS 现状》调查中,第三个最常见的答案是“认为 JavaScript 目前缺少什么?” 是日期管理

这导致了Temporal 提案的产生,它提供了一个标准的全局对象来替换该Date对象,并修复了多年来在 JavaScript 中处理日期时给开发人员带来很大痛苦的一些问题。

JavaScript 中处理日期都是很恶心的;

日期的困难导致流行的库如MomentDay.JSdate-fns出现,试图解决这些问题。然而,该TemporalAPI 在本地解决所有问题。

Temporal将支持多个时区和开箱即用的非公历,并将提供一个简单易用的 API,使从字符串解析日期变得更加容易。此外,所有Temporal对象都是不可变的,这将有助于避免任何意外的日期更改错误。

让我们看一下 API 提供的最有用方法的一些示例Temporal

Temporal.Now.Instant()

Temporal.Now.Instant()将返回一个最接近纳秒的 DateTime 对象。您可以使用from如下方法指定特定日期:

const olympics = Temporal.Instant.from('2024-07-26T20:24:00+01:00');

Temporal.PlainDate

创建一个日期,没有时间:

new Temporal.PlainDate(2024, 7, 26);

Temporal.PlainDate.from('2024-07-26')

Temporal.PlainTime

作为 的补充PlainDate(),我们可以使用它来创建一个没有日期的时间,使用.PlainTime()

new Temporal.PlainTime(20, 24, 0);

Temporal.PlainTime.from('20:24:00');

Temporal.PlainMonthDay

同样,还有PlainYearMonth只返回年份和月份(对于表示一年中的整个月份很有用):

const march = Temporal.PlainYearMonth.from({ month: 3, year: 2024 });

Temporal.Now.plainDateISO()

可以使用 Temporal 对象完成许多计算。可以向日期对象添加和减去各种时间单位:

const today = Temporal.Now.plainDateISO();

const lastWeek = today.subtract({ days: 7});

const nextWeek = today.add({ days: 7 });

until方法since可让您了解距某个特定日期或自该日期发生以来的时间。例如,以下代码将告诉您距离巴黎奥运会还有多少天:

olympics.until().days

valentinesDay.since().hours

这些方法返回一个Temporal.Duration对象,该对象可用于测量具有多种不同单位和舍入选项的时间量

附加功能

可以从 Date 对象中提取年、月、日,并从 Time 对象中提取时、分、秒、毫秒、微秒和纳秒(微秒和纳秒在当前 DateTime 对象中不可用)。例如:

olympics.hour;
<< 20

还有其他属性,例如dayOfWeek(返回1星期一和7星期日)、daysInMonth(返回2829,3031取决于月份) 和daysinYear(返回365366取决于闰年)。

Temporal日期对象还有一个compare方法,可用于使用各种排序算法对日期进行排序。

点赞收藏支持、手留余香、与有荣焉,动动你发财的小手哟,感谢各位大佬能留下您的足迹。

ES2024 Temporal API——JavaScript时间与日期处理的革命性新篇章

往期热门精彩推荐

面试相关热门推荐

实战开发相关推荐

移动端相关推荐

Git 相关推荐

转载自:https://juejin.cn/post/7348380622396686351
评论
请登录