我有一个日期字符串21-Apr-2018。如何将此日期字符串转换为python中的OLE自动化日期?我正在使用PythonV3.6。
在这里可以找到OLE日期的定义。
https://msdn.microsoft.com/en-us/library/system.datetime.tooadate(v=vs.110).aspx
OLE自动化日期被实现为浮点数,其整数是1899年12月30日午夜之前或之后的天数,其小数部分表示该日的时间除以24。例如,1899年12月31日午夜为1.0;1900年1月1日上午6时为2.25;1899年12月29日午夜为-1.0;1899年12月29日上午6时为-1.25。 基本的OLE自动化日期是1899年12月30日午夜。最低限度的OLE自动化日期是0100年1月1日午夜。最大OLE自动化日期与DateTime.MaxValue相同,即9999年12月31日的最后一刻。
发布于 2018-04-22 00:26:58
至少有几种方法。您可以从OLE起始日期手动计算,也可以使用第三方库(如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.0https://stackoverflow.com/questions/49956741
复制相似问题