如何在Python中将`ctime`转换为`datetime`?

时间:2012-04-21 04:05:30

标签: python datetime

import time
t = time.ctime()

目前,对我来说,t'Sat Apr 21 11:58:02 2012'。我有更多这样的数据。

我的问题是:

  • 如何在Python中将t转换为datetime?它有什么模块吗?

我尝试制作时间dict,然后转换t,但感觉这不是在Python中执行此操作的最佳方法。

详细信息:

  • 我有一个ctime列表(例如['Sat Apr 21 11:56:48 2012', 'Sat Apr 21 11:56:48 2012'])。
  • 我想将内容转换为datetime,然后将其存储在db timestamp中。

4 个答案:

答案 0 :(得分:28)

您应该使用strptime:此函数根据格式解析表示时间的字符串。返回值为struct_time

format parameter defaults to %a %b %d %H:%M:%S %Y与ctime()返回的格式匹配。

因此,在您的情况下,只需尝试以下行,因为默认格式是来自ctime的格式:

import datetime
import time

datetime.datetime.strptime(time.ctime(), "%a %b %d %H:%M:%S %Y")

返回:datetime.datetime(2012, 4, 21, 4, 22, 00)

答案 1 :(得分:3)

答案 2 :(得分:2)

只需使用%c

datetime.datetime.strptime(time.ctime(), "%c")

答案 3 :(得分:0)

短。不。

  

Locale information is not used by ctime().

     

注意:当使用time.ctime()datetime.fromtimestamp()时,转换本地时区时也会遇到历史问题。如这些答案herehere的注释中所述

长。

或者,如果您需要可以格式化的“日期和时间”,则可以使用datetimetime.strftime,甚至使用python pandas和此处{{ 3}},最后在这里posix_time上提及其他答案。

已知日期差异

如果您不担心使用datetime.strptimetimezonesJulian CalendarAmbiguous Timesconverting to localtime,希望使用EPOCH时间,请务必指定UNIXTIMESTAMPNotable epoch dates in computing

  

unix

     
    

“当您指的是Unix时间时,请不要再称其为”纪元时间”。......

  

我的用法

现在像所有的一切一样疯狂,它还不是那么糟糕。我以前曾在许多公司工作过,但通常不会像通常那样在工作场所进行。

因此,除了所有这些...这是我个人的最爱:

我将其用于自己的东西:I thank Matt on this thread

from time import strftime

print(strftime('%Y%m%d_%H%M%S'))

我返回的时间:年,月,日,_,时,分,秒

20180827_021106

我在函数中使用的是

def _now():
    """The Module Reports A Formatted Time."""
    ymd = (strftime('%Y%m%d_%H%M%S'))
    return ymd

简单一些,可以使我的日志井井有条。