转换日期时间对象

时间:2015-02-26 19:16:42

标签: python datetime import-from-excel

我有一张包含日期的Excel表格。

使用以下内容将其转换为datetime对象:

def excel_time_to_string(xltimeinput):
        try:
            retVal = xlrd.xldate.xldate_as_datetime(xltimeinput, wb.datemode)
        except ValueError:
            print('You passed in an argument in that can not be translated to a datetime.')
            print('Will return original value and carry on')
            retVal = xltimeinput
        return retVal

我定义了包含日期的列,并在这些单元格上使用def:

date_cols = [16, 18, 29, 42, 43]

    headerrow = wb.sheet_by_index(0).row_values(0)
    wr.writerow(headerrow)

    for rownum in xrange(1,wb.sheet_by_index(0).nrows):
        # Get the cell values and then convert the relevant ones before writing
        cell_values = wb.sheet_by_index(0).row_values(rownum)
        for col in date_cols:
            cell_values[col] = excel_time_to_string(cell_values[col])
        wr.writerow(cell_values)

到目前为止一切顺利,我得到了在我的csv中写的正确对象:     2008-09-30 00:00:00

但我需要采用不同的格式:%d.%m.%Y

我认为我必须在for循环而不是def中进行“转换”吗?

1 个答案:

答案 0 :(得分:3)

我不熟悉xlrd,但据我所知,你使用的函数(xlrd.xldate.xldate_as_datetime)会返回一个python datetime.datetime对象。

datetime.datetime对象具有特定格式(因此retVal具有特定格式),但您可以使用datetime.strftime()方法更改它。

>>>import datetime
>>>x = datetime.today()
>>>print(x)
2015-02-26 11:31:31.432000
>>>x.strftime('%d.%m.%Y')
'26.02.2015'

您可以在函数中对retVal执行此转换,例如

retVal = retVal.strftime('desired format')

在这里阅读更多内容: https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior