首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将日期从字符串格式转换为OLE自动化日期

将日期从字符串格式转换为OLE自动化日期
EN

Stack Overflow用户
提问于 2018-04-21 14:22:20
回答 1查看 1.6K关注 0票数 3

我有一个日期字符串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日的最后一刻。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-22 00:26:58

至少有几种方法。您可以从OLE起始日期手动计算,也可以使用第三方库(如xlrd )。

在每种情况下,都需要将字符串转换为datetime对象。

代码语言:javascript
复制
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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49956741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档