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。
我正在将 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
adatetime.datetime()
object.
在您的情况下,日期模式将为 0。