我有一个日期字符串 21-Apr-2018
。如何将此日期字符串转换为 python 中的 OLE 自动化日期?我正在使用 Python v3.6。
可以在此处找到 OLE 日期的定义。
https://msdn.microsoft.com/en-us/library/system.datetime.tooadate(v=vs.110).aspx
An OLE Automation date is implemented as a floating-point number whose integral component is the number of days before or after midnight, 30 December 1899, and whose fractional component represents the time on that day divided by 24. For example, midnight, 31 December 1899 is represented by 1.0; 6 A.M., 1 January 1900 is represented by 2.25; midnight, 29 December 1899 is represented by -1.0; and 6 A.M., 29 December 1899 is represented by -1.25.
The base OLE Automation Date is midnight, 30 December 1899. The minimum OLE Automation date is midnight, 1 January 0100. The maximum OLE Automation Date is the same as DateTime.MaxValue, the last moment of 31 December 9999.
最佳答案
至少有几种方法。您可以从 OLE 起始日期手动计算,或使用第 3 方库,例如 xlrd
.
在每种情况下,您都需要将字符串转换为 datetime
对象。
from datetime import datetime
from xlrd import xldate
def datetime2ole(date):
date = datetime.strptime(date, '%d-%b-%Y')
OLE_TIME_ZERO = datetime(1899, 12, 30)
delta = date - OLE_TIME_ZERO
return float(delta.days) + (float(delta.seconds) / 86400) # 86,400 seconds in day
def datetime2xl(date):
date = datetime.strptime(date, '%d-%b-%Y')
parts = ('year', 'month', 'day', 'hour', 'minute', 'second')
components = tuple(getattr(date, x) for x in parts)
return xldate.xldate_from_datetime_tuple(components, 0)
print(datetime2ole('22-Apr-2018')) # 43212.0
print(datetime2xl('22-Apr-2018')) # 43212.0
关于python - 将日期从字符串格式转换为 OLE 自动化日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49956741/