使用 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 等工具计算两个日期之间相差的天数,祝您编码愉快。