加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python时间模块将不会在1900年之前处理

发布时间:2020-12-20 11:19:18 所属栏目:Python 来源:网络整理
导读:我想从文本文件中转换出生日期.比方说,我有数据 fjsffk 1985-01-30fkgskgks 1899-02-20 我尝试使用以下代码,仍然收到错误: import datetimemonths = ['January','February','March','April','May','June','July','August','September','October','November'
我想从文本文件中转换出生日期.比方说,我有数据

fjsffk 1985-01-30
fkgskgks 1899-02-20

我尝试使用以下代码,仍然收到错误:

import datetime

months = ['January','February','March','April','May','June','July','August','September','October','November','December']
with open('file.txt','r') as f:
    for line in f.readlines():
        dob = line.rsplit(None,1)[-1]  
        dt = datetime.strptime(dob,"%Y-%m-%d")          
        print "{0:} {1:},{2:}".format(months[dt.month-1],dt.day,dt.year)

请解决任何问题,谢谢!

解决方法

根据python tutorial

The exact range of years for which
strftime() works also varies across
platforms. Regardless of platform,
years before 1900 cannot be used.

请耐心等待 – 我尝试了以下解决方案,它适用于我:

from datetime import datetime

mDt = datetime(1900,01,01)
dt = datetime.strptime('20-02-1899',"%d-%m-%Y")
resultString = datetime(dt.year + (mDt - dt).days/365 + 1,dt.month,dt.day).strftime('%B %d,%Y').replace('1900',str(dt.year))

或类似的东西:

monthes = ['January','December']
dt = datetime.strptime('20-02-1890',"%d-%m-%Y")
print "{0:} {1:},{2:}".format(monthes[dt.month-1],dt.year)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读