我有一个日期字符串21-Apr-2018
。如何将此日期字符串转换为 python 中的 OLE 自动化日期?我正在使用Python v3.6。
OLE 日期的定义可以在此处找到。
https://msdn.microsoft.com/en-us/library/system.datetime.tooadate(v=vs.110).aspx https://msdn.microsoft.com/en-us/library/system.datetime.tooadate(v=vs.110).aspx
OLE 自动化日期被实现为浮点数,其
整数部分是午夜之前或之后的天数,30
1899 年 12 月,其小数部分代表时间
当天除以 24。例如,1899 年 12 月 31 日午夜为
用1.0表示; 1900 年 1 月 1 日上午 6 点用 2.25 表示;
1899 年 12 月 29 日午夜用 -1.0 表示;和 29 日早上 6 点
1899 年 12 月用 -1.25 表示。
基本 OLE 自动化日期是 1899 年 12 月 30 日午夜。
最小 OLE 自动化日期为 0100 年 1 月 1 日午夜。
OLE自动化Date与DateTime.MaxValue相同,最后一刻
12 月 31 日 9999。
至少有几种方法。您可以根据 OLE 原始日期手动计算,或使用第 3 方库,例如xlrd http://xlrd.readthedocs.io/en/latest/.
在每种情况下,您都需要将字符串转换为datetime
object.
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)