我在excel中有一个日期,其中包含:dd mmm yy
格式,即
29 Jun 18
如何将此字符串转换为日期对象?
我收到错误:
time data '13 Jul 18' does not match format '%d %m %Y'
当我尝试
时datetime.strptime(input, '%d %m %Y')
正确的日期格式应该是什么?
答案 0 :(得分:2)
由于您的excell中的年份只有两位数(即18而不是2018),因此您需要在格式字符串中使用%y
而不是%Y
:
datetime.strptime(input, '%d %b %y')
例如:
datetime.strptime( '13 Jul 18', '%d %b %y')
结果:
datetime.datetime(2018, 7, 13, 0, 0)
有关日期/时间字符串格式的详细信息,请参阅this page。
答案 1 :(得分:0)
您可以使用python datetime模块,也可以使用dateutil解析器将字符串日期解析为有效的datetime对象。因为我不必定义字符串格式,所以我会选择dateutil parser
。这是一个例子
from dateutil.parser import parse
dt = parse("Thu Sep 25 10:36:28 BRST 2003")
请务必按pip install python-dateutil
答案 2 :(得分:0)
您可以使用遵循该模式的strptime:
datetime.strptime(date_string, format)
示例:
from datetime import datetime
dt = datetime.strptime('19 Jul 2017', '%d %b %y')
希望这会有所帮助:)
答案 3 :(得分:0)
您必须import datetime
和import xlrd
使用xlrd
打开excel工作簿
book = xlrd.open_workbook("Excel.xlsx")
sheet = book.sheet_by_name("Worksheet")
使用此转换
obj = datetime.datetime(*xlrd.xldate_as_tuple(sheet.cell(row,column).value, book.datemode))
答案 4 :(得分:0)
from datetime import datetime
datetime.strptime("29 Jun 18", "%d %b %y").date()
在这里你得到一个datetime.date对象,我不知道这对你来说是否足够好。我建议您访问documentation on the module
答案 5 :(得分:0)
您的格式不正确:%b是Locale的短月,%y是两位数年
import time
time.strptime('13 Jul 18', '%d %b %y')
time.struct_time(tm_year=2018, tm_mon=7, tm_mday=13, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=194, tm_isdst=-1)