gpt4 book ai didi

python - 如何在python中将日期时间转换为整数

转载 作者:太空狗 更新时间:2023-10-29 22:09:17 24 4
gpt4 key购买 nike

如何在 python 中将 YYYY-MM-DD hh:mm:ss 格式转换为整数?例如 2014-02-12 20:51:14 -> 为整数。

我只知道如何转换hh:mm:ss,但不知道如何转换yyyy-mm-dd hh:mm:ss

def time_to_num(time_str):
hh, mm , ss = map(int, time_str.split(':'))
return ss + 60*(mm + 60*hh)

最佳答案

这取决于整数应该编码的内容。您可以将日期转换为之前某个时间的毫秒数。人们通常会在 1970 年 1 月 1 日或 1900 年凌晨 12:00 时执行此操作,并将时间测量为从该点开始的整数毫秒数。 datetime 模块(或其他类似模块)将具有为您执行此操作的函数:例如,您可以使用 int(datetime.datetime.utcnow().timestamp()).

如果您想对年、月和日进行语义编码,一种方法是将这些分量乘以足够大的数量级值,以便将它们并列在整数位中:

2012-06-13 --> 20120613 = 10,000 * (2012) + 100 * (6) + 1*(13)

def to_integer(dt_time):
return 10000*dt_time.year + 100*dt_time.month + dt_time.day

例如

In [1]: import datetime

In [2]: %cpaste
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
:def to_integer(dt_time):
: return 10000*dt_time.year + 100*dt_time.month + dt_time.day
: # Or take the appropriate chars from a string date representation.
:--

In [3]: to_integer(datetime.date(2012, 6, 13))
Out[3]: 20120613

如果您还需要分钟和秒,则只需根据需要包含更多数量级以显示数字。

我在遗留系统中经常遇到第二种方法,尤其是从遗留 SQL 数据库中提取基于日期的数据的系统。

非常糟糕。您最终会编写大量 hacky 代码来对齐日期、计算月份或日期偏移量,因为它们将以整数格式出现(例如,当您通过 12 月时将月份重置回 1,然后递增年份值),以及样板与整数格式相互转换。

除非这样的约定存在于您正在使用的 API 的深层、低级且经过全面测试的部分,这样每个使用过数据的人都可以真正依赖这个整数表示及其所有辅助函数, 那么你最终会看到很多人到处重写基本的日期处理例程。

通常最好将值保留在日期上下文中,例如 datetime.date,尽可能长时间,以便对其进行的操作以自然的日期形式表示-基于上下文,而不是一些单独的开发人员对整数的个人破解。

关于python - 如何在python中将日期时间转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28154066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com