簡體   English   中英

Python 3.4 strptime() 不工作

[英]Python 3.4 strptime() not working

我正在嘗試將字符串轉換為日期時間,但它不起作用...

self.loadsList[loadID][5] = datetime.strptime(
self.loadsList[loadID][5]+" "+self.loadsList[loadID][6], "%x %X %z")

它會引發值錯誤。

ValueError: time data '11/08/2014 04:00:00 -0500' does not match format '%x %X %z'

我究竟做錯了什么? 謝謝! (Python 3.4)

默認的%x格式相當於%d/%m/%y ,其中%y匹配兩位數的年份

>>> import locale
>>> locale.nl_langinfo(locale.D_FMT)
'%m/%d/%y'

您的輸入改為使用 4 位數年份:

>>> from datetime import datetime
>>> datetime.strptime('11/08/2014', '%x')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python3.4/_strptime.py", line 500, in _strptime_datetime
    tt, fraction = _strptime(data_string, format)
  File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python3.4/_strptime.py", line 340, in _strptime
    data_string[found.end():])
ValueError: unconverted data remains: 14

我不會使用%x%X ,只是拼出日期和時間格式; 根據您的輸入和%x的使用:

'%m/%d/%Y %H:%M:%S %z'

演示:

>>> datetime.strptime('11/08/2014 04:00:00 -0500', '%m/%d/%Y %H:%M:%S %z')
datetime.datetime(2014, 11, 8, 4, 0, tzinfo=datetime.timezone(datetime.timedelta(-1, 68400)))

不清楚您的輸入是代表 11 月 8 日還是 8 月 11 日; 您對%x的使用建議前者,但我懷疑您應該以相反的方式解釋該值:

'%d/%m/%Y %H:%M:%S %z'

另一種方法是將 Python 語言環境從默認的C切換到en_US ,其中年份使用 4 位數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM