2012-11-25 43 views
11

我正在刮一個頁面,其中包括日期信息。所以我有一個名爲warrant_issued的變量,其中包含u'11/5/2003' - 我想將其作爲機器可讀日期進行存儲。 PHP有一個非常方便的strtotime函數。我希望datetimestrptime會幫助我,但它似乎並沒有在我的版本的datetime可用 - 這裏是我的一切標籤完整的datetime.如何在python中打字?

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'變成日期的最佳方法是什麼?

回答

10

strptime()絕對是正確的方法,它只是datetime class的一個類方法(容易混淆datetime模塊的一部分)。

也就是說,datetime.datetime.strptime()是你要找的內容(而不是datetime.strptime()

+1

但PHP的strtotime功能,可自動檢測字符串格式,有沒有在Python任何類似的做法? –

+1

['dateutil'庫](http://dateutil.readthedocs.io/en/stable/parser.html)可以解析日期時間字符串(推斷它們的格式)。但是,請注意「11/5/2003」不是一個明確的格式(MM/DD或DD/MM因地區而異),因此在這種情況下應謹慎使用dateutil。 –

+0

@DavidCain php也對這些問題提出警告。我個人喜歡使用php中的strtotime()在正確的格式中解析日期字符串的看似魔法能力,但不喜歡缺乏特異性。 – jamescampbell

6

試試這個:

爲了與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) 
1

感謝來自@大衛該隱的評論回覆:

的dateutil庫可以解析日期時間字符串(推斷它們的格式)。但是,請注意「11/5/2003」不是一個明確的格式(MM/DD或DD/MM因地區而異),因此在這種情況下應謹慎使用dateutil。大衛 - 凱恩

所以另一種很好的做法是使用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) 
相關問題