Dynamics CRM 2011 时间戳变为 Python

Dynamics CRM 2011 Timestamp into Python

我正在将 Dynamics CRM 2011 中的数据导出到 Excel 文件中。条目具有时间戳。在 CRM 中,它们看起来像正常日期,但当我将它们导出到 Excel 时,时间戳看起来类似于:

41855.4043865741

41831.6309259259

在 Excel 中,我可以右键单击带有时间戳的单元格,然后执行“单元格格式设置”>“数字”>“日期”并将其转换为人类可读的字符串。

例如 2014 年 8 月 4 日 09:42:19

2014 年 7 月 11 日 15:08:32

问题是,在我用人类可读的日期时间格式保存 Excel 并用 xlrd 模块 (Python 2.7) 读取 Excel 之后,我仍然得到奇怪的格式而不是翻译的。

所以我尝试使用 datetime 模块来调整日期,但是这样做时我得到了错误的日期。

import datetime
str_dt = float(41831.6309259259)
print datetime.datetime.fromtimestamp(str_dt).strftime('%Y-%m-%d %H:%M:%S')

我的结果是:1970-01-01 12:37:11 当然它不是 Unixtimestamp 但我不知道它实际上是什么时间戳以及如何用 python.

转换它

您看到的值是自 1900 年 1 月 1 日以来的实际天数。这是 CRM 和 Excel 使用的格式。

按照 this answer, you can use xlrd.xldate.xldate_as_datetime 中的建议:

Convert an Excel date/time number into a datetime.datetime object.

@param xldate The Excel number
@param datemode 0: 1900-based, 1: 1904-based.

@return a datetime.datetime() object.

在您的情况下,日期模式将为 0。