当前位置: 首页 > 面试题库 >

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

邬朗
2023-03-14
问题内容

如何在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日上午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,例如获得在指定日期的午夜?相反的转换很容易:有一个方法。 我真的必须手动打电话吗? 问题答案: 您可以使用;现在,您创建一个初始化为午夜的对象。

  • 问题内容: 论坛成员 我在Java中遇到日期时间问题。实际上,我正在接收 格式为2012-02-27T01:10:10 的开始日期,并且我想将接收到的日期插入具有datetime数据类型的数据库中。 实际上,我尝试通过以下代码将收到的开始日期转换为日期时间 但是使用上面的代码,只有 日期被添加到我的数据库中,例如2012-02-27 00:00:00 我也想将时间添加到数据库中,但是当我将Simp

  • 问题内容: 如何在MySQL中转换为? 问题答案: 在MySQL中使用功能 请记住,如果使用的框架以毫秒为单位进行存储(例如Java的时间戳),则 必须除以1000 ,以秒为单位获取正确的Unix时间。

  • 问题内容: 我正在python中创建一个模块,在其中我以整数格式接收日期,例如,它表示2012年2月13日。现在,我想将此整数格式的日期转换为python date对象。 另外,是否有任何方法可以减去/加这样的整数格式日期的天数以接收相同格式的日期值?像从中减去30天并得到答案? 问题答案: 我建议采用以下简单的转换方法: 要添加/减去任意天数(秒也是如此),您可以执行以下操作: 并转换回使用:

  • 问题内容: 我想将日期转换为时间戳,我的输入是。我用了 上面写着NaN ..有人能告诉你如何转换吗? 问题答案: var myDate = “26-02-2012”; myDate = myDate.split(“-“); var newDate = myDate[1]+”,”+myDate[0]+”,”+myDate[2]; console.log(new Date(newDate).getTi

  • 我需要使用php将日期时间插入到oracle表中。 我的日期字符串是这种格式: 当我在php中使用这种格式时, $date1=to_date('2013-10-22 08:02:30','YYYY-MM-DD HH24: MI: SS') 我看到oracle表中的数据是PM格式的。这怎么可能?我如何更改to\u日期,以便任何时间12都是上午,任何时间12点及以上都是下午?