将excel中的日期字符串转换为python中的日期对象

时间:2017-07-19 07:09:34

标签: python datetime string-formatting

我在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')

正确的日期格式应该是什么?

6 个答案:

答案 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

安装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 datetimeimport 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)