You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python/Django中datetime.date、datetime.time转int的实现方法

我来帮你搞定这两个类型转换的问题,直接上实用的解决方案:

一、将datetime.date类型转换为int类型

根据你的业务需求,通常有两种常用的转换方式:

1. 转换为Unix时间戳整数

Unix时间戳是从1970年1月1日00:00:00 UTC到指定日期的秒数,适合需要时间维度排序或存储的场景:

from datetime import date

target_date = date(2024, 5, 20)
# 转成整数类型的时间戳
date_int = int(target_date.timestamp())
print(date_int)  # 输出示例:1716182400

2. 转换为YYYYMMDD格式的整数

如果需要更直观的日期数字(比如2024年5月20日转成20240520),可以用字符串格式化后再转int:

target_date = date(2024, 5, 20)
date_int = int(target_date.strftime("%Y%m%d"))
print(date_int)  # 输出:20240520
二、将datetime.time类型转换为int(提取小时并计算差值)

首先要注意:datetime.time对象本身不支持直接相减,会抛出TypeError。针对你的需求(忽略分钟秒,仅提取小时计算差值),最直接的方法是利用time对象的hour属性:

1. 提取单个time对象的小时转int

直接访问time.hour属性,再转成int(其实hour本身就是整数类型,转int只是确保类型安全):

from datetime import time

overtime_end = time(23)
hour_int = int(overtime_end.hour)
print(hour_int)  # 输出:23

2. 计算两个时间的小时差值并做乘法

直接提取两个时间的小时数相减,再和整数相乘即可:

overtime_start = time(14)
overtime_end = time(23)

# 计算小时差
overtime_count = overtime_end.hour - overtime_start.hour
# 和整数相乘
result = overtime_count * 20
print(result)  # 输出:180

如果后续需要处理包含分钟秒的时间(但仍要忽略它们),同样只需要取hour属性即可,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Dicky Raambo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:36:42