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

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

我知道如何仅转换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日上午12:00或1900等,然后以该点之后的整数毫秒为单位来度量时间。该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代码来对齐日期,计算月或日偏移量,因为它们会以整数格式显示(例如,当您通过十二月时将月份重置为1,然后增加年份值),并为全部转换为整数格式或从整数格式转换。

除非此类约定存在于您正在使用的API的深层,低级和经过全面测试的部分中,否则任何使用数据的人实际上都可以依靠此整数表示及其所有辅助函数,然后您最后,很多人在各处重写了基本的日期处理例程。

通常最好将值datetime.date尽可能长时间地保留在日期上下文中,例如,以便在自然的,基于日期的上下文中表达对它的操作,而不是将某个开发人员的个人技巧变成整数。

以上是 如何在Python中将日期时间转换为整数 的全部内容, 来源链接: utcz.com/qa/432707.html

回到顶部