Javascript date-fns 更具体 distanceInWords
Javascript date-fns more specific distanceInWords
我正在使用 distanceInWord 来了解两个日期之间有多少时间。但这并不是我想要的,因为我需要更具体。
例如,如果我有这个:1 January 2019 15:00:00 and 1 January 2019 16:30:00
实际上 returns 1 hour
与 distanceInWordStrict()
或 about 1 hour
与 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`;
此外,您可以简单地获取以毫秒为单位的差异,从中创建一个日期对象并以您喜欢的任何方式设置格式。
请注意,如果您的差异超过一天,它将以小时数输出。所以最终的解决方案主要取决于你的各种可能范围。
我正在使用 distanceInWord 来了解两个日期之间有多少时间。但这并不是我想要的,因为我需要更具体。
例如,如果我有这个:1 January 2019 15:00:00 and 1 January 2019 16:30:00
实际上 returns 1 hour
与 distanceInWordStrict()
或 about 1 hour
与 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`;
此外,您可以简单地获取以毫秒为单位的差异,从中创建一个日期对象并以您喜欢的任何方式设置格式。
请注意,如果您的差异超过一天,它将以小时数输出。所以最终的解决方案主要取决于你的各种可能范围。