javascript - Javascript date-fns 更具体的 distanceInWords
问题描述
我正在使用distanceInWord来知道两个日期之间有多少时间。但这并不是我想要的,因为我需要更具体。
例如,如果我有这个:1 January 2019 15:00:00 and 1 January 2019 16:30:00
实际上它返回1 hour
withdistanceInWordStrict()
或about 1 hour
with distanceInWord()
。
所以我需要得到1h30
这个。
我该怎么做才能更具体?1h30、2h15、3h45、2 天 5 小时等...
解决方案
distanceInWord
根据文档,您不能这样做,因为它是为广泛的范围和短的结果字符串(about 7 years
而不是7 years, 4 months, 7 weeks, 3 days and 5 seconds
)创建的。您只能强制单位distanceInWordStrict
传入{unit: 'm'}
,因为第三个参数将输出90 minutes
。
但是你可以得到任何单位和根据结果的日期之间的差异 - 你想要的格式。像这样的东西:
let result;
const date1 = '1 January 2019 15:00:00';
const date2 = '1 January 2019 16:30:00';
const minutes = Math.abs(differenceInMinutes(date1, date2));
if(minutes < 60) {
result = distanceInWordsStrict(date1, date2, {unit: 'm'})
}
else {
result = distanceInWordsStrict(date1, date2, {unit: 'h'});
result = result.replace(/ hours?/, `h${minutes % 60}m`)
}
如果您从不超过几个小时,那么这将是一种更简单的格式化方法:
const hours = Math.abs(differenceInHours(date1, date2);
result = `${hours}h${minutes % 60}m`;
此外,您可以简单地以毫秒为单位获取差异,从中创建一个日期对象并以您喜欢的任何方式格式化。
请注意,如果您的差异超过一天,它将以小时数输出。所以最终的解决方案主要取决于你的各种可能范围。
推荐阅读
- python - Matplotlib 底图安装问题 mac OS
- c# - 替换字符的第 n 个索引
- javascript - Select2 - 不显示/删除初始值
- reactjs - 您能否指定必须提供一组道具中的至少一个道具?
- wolfram-mathematica - Wolfram 中的动态操作函数?
- python - 如何验证字符串是否是 Python 中的有效日期
- spring-boot - 以反应方式将嵌套记录插入到 mongo
- c++ - 在 shared_ptr 上使用运算符(如 <<)
- django - 如何在 ModelAdmin 中创建用于保存模型和 save_model 的动态方法以获取和设置当前用户。
- java - 如何将自定义 java 模块加载到 Wowza 流引擎中?