计算两个日期之间的间隔天数

文章目录

使用 Python 计算两个日期之间的天数

在 Python 中,两个 datetime 对象直接相减得到的 timedelta 对象的属性中就有天数差(两个日期之间相差的天数),如下所示:

>>> from datetime import datetime
>>> delta = datetime(2024, 1, 1) - datetime(2023, 2, 1)
>>> delta
datetime.timedelta(days=334)
>>> delta.days
334
>>> delta.total_seconds()
28857600.0
>>>

以上代码就是计算 2024 年 1 月 1 日 和 2023 年 2 月 1 日之间相差了 334 天,两个日期之间相差的总秒数为 28857600 秒。

如果你想使用时间字符串进行计算,则可以参考文章: 如何在 Python 中将字符串转换为 datetime 或 time 对象,将字符串先转换为 datetime 对象再进行相减。

使用 Excel 计算两个日期之间的天数

在 Excel 中直接将两个单元格相减或者使用 DAYS 函数,如下所示:

A B C D
1 2024-01-01 2023-02-01 =A1-B1 =DAYS(A1, B1)

使用 Golang 计算两个日期之间的天数

Golang 中没有内建的方法可以直接获取天数差,必须通过 Time 对象计算出 Duration, 通过 Duration 对象获取小时数在计算天数。

package main

import (
	"fmt"
	"time"
)

func main() {
	date1 := time.Date(2024, 1, 1, 0, 0, 0, 0, time.Local)
	date2 := time.Date(2023, 2, 1, 0, 0, 0, 0, time.Local)
	delta := date1.Sub(date2)

	fmt.Println(delta.Hours() / 24)  // Output: 334
}

将时间字符串转换为 Golang 的 Time 对象进行计算示例

package main

import (
	"fmt"
	"time"
)

func main() {
	date1, _ := time.Parse("2006-01-02", "2024-01-01")
	date2, _ := time.Parse("2006-01-02", "2023-02-01")
	delta := date1.Sub(date2)

	fmt.Println(delta.Hours() / 24)  // Output: 334
}

time 包中的 Parse 方法可以将时间字符串解析成 Time 对象,再通过 Time 对象的 Sub 方法计算时间差, Sub 方法返回一个 Duration 对象,通过 Duration.Hours() 方法获取相差的总小时数,再除以 24 得到间隔天数。

将时间戳转换为 Golang 的 Time 对象进行计算示例

package main

import (
	"fmt"
	"time"
)

func main() {
	date1 := time.Unix(1704038400, 0)  // 2023-01-01 00:00:00
	date2 := time.Unix(1675180800, 0)  // 2023-02-01 00:00:00
	delta := date1.Sub(date2)

	fmt.Println(delta.Hours() / 24)  // Output: 334
}

使用 JavaScript 计算两个日期之间的天数

通过 js 的 Date.parse 方法将日期转换为对应的时间戳,通过两个时间戳的差值进行天数计算:

var date1 = Date.parse("2024-01-01");
var date2 = Date.parse("2023-02-01");

var days = (date1 - date2) / (1000 * 60 * 60 * 24);

console.log(days)

注意 Date.parse 方法返回的时间戳,单位是毫秒。

总结

本文通过具体示例展示了如何使用 Python、Golang、JS、Excel 等工具计算两个日期之间相差的天数,祝您编码愉快。


也可以看看


全国大流量卡免费领

19元月租ㆍ超值优惠ㆍ长期套餐ㆍ免费包邮ㆍ官方正品