首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以不同格式获取卡号年数之间的差异

以不同格式获取卡号年数之间的差异
EN

Stack Overflow用户
提问于 2021-10-31 08:24:10
回答 1查看 59关注 0票数 2

我试图从一个列表中得到两个日期(字符串)‘开始日期’和‘结束日期’之间的年份差异,但我注意到日期列表的格式不正确。在尝试转换成相同的格式后,输出一直将年份更改为2021年,这是错误的。这是我的代码和输出

代码语言:javascript
复制
start_date= ['18-Aug', '12-Aug', 'Nov-19', 'Oct-17', '19-Apr', 'Mar-15', '12-Jul', 'Jul-15', '13-May', '13-Oct']

for i in range(len(start_date)):
    print(dateutil.parser.parse(start_date[i]).strftime("%y-%b"))

输出:

代码语言:javascript
复制
21-Aug
21-Aug
21-Nov
21-Oct
21-Apr
21-Mar
21-Jul
21-Jul
21-May
21-Oct

预期产出应是:

代码语言:javascript
复制
18-08
12-08 
19-11 
17-10 
19-04 
15-03
12-07 
15-07 
13-05
13-10
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-31 08:40:10

您使用了错误的格式,%y-%b作为输出。另外,您不需要使用dateutil库。您可以通过使用标准的datetime库来完成它,如this answer所示。

代码语言:javascript
复制
from datetime import datetime


def try_parsing_date(text):
    for fmt in ('%b-%d', '%d-%b'):
        try:
            return datetime.strptime(text, fmt)
        except ValueError:
            pass
    raise ValueError('no valid date format found')


start_date = ['18-Aug', '12-Aug', 'Nov-19', 'Oct-17', '19-Apr', 'Mar-15', '12-Jul', 'Jul-15', '13-May', '13-Oct']

for text in start_date:
    print(try_parsing_date(text).strftime("%d-%m"))

输出:

代码语言:javascript
复制
18-08
12-08
19-11
17-10
19-04
15-03
12-07
15-07
13-05
13-10
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69785080

复制
相关文章

相似问题

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