Temporal 的由来
在《2022 年 JS 现状》调查中,第三个最常见的答案是“认为 JavaScript 目前缺少什么?” 是日期管理。
这导致了Temporal
提案的产生,它提供了一个标准的全局对象来替换该Date
对象,并修复了多年来在 JavaScript 中处理日期时给开发人员带来很大痛苦的一些问题。
在 JavaScript
中处理日期都是很恶心的;
日期的困难导致流行的库如Moment、Day.JS和date-fns出现,试图解决这些问题。然而,该Temporal
API 在本地解决所有问题。
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
(返回28
, 29
,30
或31
取决于月份) 和daysinYear
(返回365
或366
取决于闰年)。
Temporal
日期对象还有一个compare
方法,可用于使用各种排序算法对日期进行排序。
点赞收藏支持、手留余香、与有荣焉,动动你发财的小手哟,感谢各位大佬能留下您的足迹。
往期热门精彩推荐
面试相关热门推荐
实战开发相关推荐
移动端相关推荐
Git 相关推荐
更多精彩详见:个人主页
原文链接:https://juejin.cn/post/7348380622396686351 作者:StriveToY