Dayjs计算两个日期之间的天数和小时数差异

14
我想使用 dayjs 库计算两个日期之间的差值。它可以很好地工作,但我需要稍微改变一下。例如:
`${dayjs(item).diff(now, 'day') day}`

这个函数返回'20天'或者其他的时间,但是在'item'里面没有计算小时数。我的意思是应该显示为'20天9小时'。

我该如何使用dayjs实现这个功能?

感谢任何帮助。


2
获取秒差,然后将其转换为所需的格式(天/小时)。 - 0stone0
这个回答解决了你的问题吗?使用dayjs计算两个时间之间的差异 - 0stone0
1
获取小时差,然后将其转换为天数和小时。 - Hassan Imam
3个回答

26
  1. 获取小时差
  2. 将小时数除以24(并四舍五入)以获取天数
  3. 获取余数,即为剩余的小时数

const date1 = dayjs('2021-03-13');
const date2 = dayjs();

let hours = date2.diff(date1, 'hours');
const days = Math.floor(hours / 24);
hours = hours - (days * 24);

console.log('Days: ', days);
console.log('Hours: ', hours);
<script src="https://unpkg.com/dayjs@1.8.21/dayjs.min.js"></script>


使用秒钟也可以实现相同的逻辑,然后应用一个函数将这些秒钟转换为天/小时/分钟:

使用JavaScript将秒转换为HH-MM-SS?


1
并非所有的日子都是在使用夏令时的情况下拥有24小时,因此该方法并不总是准确的。已经有大量关于两个日期之间差异的问题和答案出现在stackoverflow上。 - RobG

6

您可以通过在diff的第二个参数中添加true来获取带小数点的天数,并进行操作:

const date1 = dayjs('2021-03-13');
const date2 = dayjs();
const diff = date2.diff(date1,'day',true);
console.log("obtained", diff);
const days = Math.floor(diff);
const hours = Math.floor((diff - days) * 24);
console.log(`${days} days, ${hours} hours`);
<script src="https://unpkg.com/dayjs@1.8.21/dayjs.min.js"></script>


0

${dayjs(item).diff(now, 'hour') 小时

而不是 ${dayjs(item).diff(now, 'day') 天

第二个参数是要使用的计量单位,将其设置为“天”


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接