如何在python中执行strtotime?

2024-04-30 02:06:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在抓取一个页面,其中包括日期信息。所以我有一个名为warrant_issued的变量,它包含u'11/5/2003'——我想把它存储为机器可读的日期。PHP有一个方便的strtotime函数,它工作得非常好。我本来希望datetimestrptime能帮到我,但在我的datetime版本中似乎找不到它——这里是我在datetime.选项卡中完成的所有内容

In [231]: datetime.
datetime.MAXYEAR           datetime.__hash__          datetime.__sizeof__
datetime.MINYEAR           datetime.__init__          datetime.__str__
datetime.__class__         datetime.__name__          datetime.__subclasshook__
datetime.__delattr__       datetime.__new__           datetime.date
datetime.__dict__          datetime.__package__       datetime.datetime
datetime.__doc__           datetime.__reduce__        datetime.datetime_CAPI
datetime.__file__          datetime.__reduce_ex__     datetime.time
datetime.__format__        datetime.__repr__          datetime.timedelta
datetime.__getattribute__  datetime.__setattr__       datetime.tzinfo

我用的是iPython 2.7.2+

我是不是找错树了?把u'11/5/2003'变成约会的最好方法是什么?


Tags: 函数in版本机器信息reduce内容datetime
3条回答

感谢@David Cain的评论回复:

The dateutil library can parse datetime strings (inferring their format). However, note that "11/5/2003" is not an unambiguous format (MM/DD or DD/MM differs by locale), so dateutil should be used with caution in this case. – David Cain

因此,另一个好的做法是使用dateutil库:

>>> from dateutil.parser import parse
>>> dt = parse('2016/12/05 05:18 pm')
>>> dt
datetime.datetime(2016, 12, 5, 17, 18)
>>> dt.timestamp()
1480929480.0

>>> parse('16/11/12')
>>> datetime.datetime(2012, 11, 16, 0, 0)

^{}绝对是正确的方法,它只是^{} class(令人困惑的是datetime模块的一部分)的类方法。

也就是说,datetime.datetime.strptime()是你想要的(而不是datetime.strptime())。

试试这个:

用于datetime module,文档here

>>>import datetime
>>>a = u'11/5/2003'
>>>time1 = datetime.datetime.strptime(a, "%m/%d/%Y")
>>>print time1
datetime.datetime(2003, 11, 5, 0, 0)

ipython中:

In [1]: import datetime

In [2]: a = u'11/5/2003'

In [3]: time1 = datetime.datetime.strptime(a, "%m/%d/%Y")

In [4]: print time1
2003-11-05 00:00:00

用于time module,文档here

>>>import time
>>>a = u'11/5/2003'
>>>time1 = time.strptime(a, "%m/%d/%Y")
>>>print time1
time.struct_time(tm_year=2003, tm_mon=11, tm_mday=5, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=309, tm_isdst=-1)

相关问题 更多 >