python - 转换日期时间对象

标签 python datetime import-from-excel

我有一个包含日期的 Excel 工作表。

通过以下内容,我将它们转换为日期时间对象:

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

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

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 中进行“转换”?

最佳答案

我不熟悉 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

关于python - 转换日期时间对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28750905/

相关文章:

python - 如何在 python datetime.time 上应用模运算

python - 不良的Django/uwsgi性能

java - 如何在 Joda-Time 中正确获取当前日期和时间?

python - JavaScript 的 Array.prototype.find 的 python 等价物是什么?

c# - 将日期和时间字符串序列化为 DateTime 对象

r - R 中用于从 Excel 导入和导出数据的强大方法是什么?

jquery - 导入工具 Excel CSV

.net - Excel 到 .NET 资源文件的转换

python - PIL draw.text() 将包含阿拉伯连字的字符串显示为两个单独的字形

python - 站点地图中的优先级问题