本周,我们进行了报道的基本日期格式设置日期
管和的dateFormat
函数.虽然这些工具在大多数基本场景下工作得很好,但有时我们想做更复杂的日期操作,例如:
- 在日期上加/减天数
- 显示一个持续时间,例如:"最近更新:2天前”
- 比较日期
大多数人在这种情况下使用Moment.js,但是js现在正式完成了并且处于维护模式。
最好的选择之一是date-fns.它使用现代Javascript,并尽可能依赖于本机Date对象。如果你以前用过Moment.js,date-fns
看起来很熟悉:
进口跨度>{format, formatDistance, formatRelative, subDays}<跨度class="hljs-keyword">从跨度><跨度class="hljs-string">“date-fns”跨度>格式(<跨度class="hljs-keyword">新跨度><跨度class="hljs-built_in">日期跨度>(),<跨度class="hljs-string">“‘今天是‘eeee’”跨度>)<跨度class="hljs-comment">//=> "今天是星期五"跨度>格式Distance (subDays (<跨度class="hljs-keyword">新跨度><跨度class="hljs-built_in">日期跨度>(),<跨度class="hljs-number">3.跨度>),<跨度class="hljs-keyword">新跨度><跨度class="hljs-built_in">日期跨度>(){<跨度class="hljs-attr">addSuffix跨度>:<跨度class="hljs-literal">真正的跨度>})<跨度class="hljs-comment">//=> "3 days ago"跨度>格式Relative (subDays (<跨度class="hljs-keyword">新跨度><跨度class="hljs-built_in">日期跨度>(),<跨度class="hljs-number">3.跨度>),<跨度class="hljs-keyword">新跨度><跨度class="hljs-built_in">日期跨度>())<跨度class="hljs-comment">//=> "last Friday at 7:26 p.m. ."跨度>
代码语言:跨度><跨度class="shcb-language__name">JavaScript跨度><跨度class="shcb-language__paren">(跨度><跨度class="shcb-language__slug">javascript跨度><跨度class="shcb-language__paren">)跨度>
该库包含一些有趣的帮助函数,例如closestTo
获取数组中最接近给定日期的日期,或formatDistanceToNow
,它返回有意义的、可读的距离,比如“不到一分钟”或“大约一个月”。
这些特性都是独立的函数,这对于Angular应用来说非常棒,因为它允许在构建时摇树(只有我们需要的函数包含在构建输出中),而Moment只有一个时刻()
函数中包含了所有东西,防止了正确的摇树。