Convert/split YYYYMMDD into data consisting of year, month, day in python
我的数据看起来像这样,我只需要用天。如何将int-yyyy mm dd拆分为三个整型:yy、mm、dd
1 2 3 4 5 6 | YYYYMMDD 20170301 20170302 20170303 20170304 20170305 |
编辑:刚刚注意到OP只想要当天。如果您不愿意将字符串解释为一个
就在这一天:
1 2 | my_date= '20170301' my_day = int(my_date[-2:]) |
原始答案:
如果要将日期解释为其他引用的
1 2 3 4 5 | import datetime my_str = '20170301' my_date = datetime.datetime.strptime(my_str,'%Y%m%d') print(my_date) print(type(my_date)) |
。输出:
1 2 | 2017-03-01 00:00:00 <class 'datetime.datetime'> |
。
现在您可以解释
1 2 3 4 5 | my_day = b.day my_month = b.month my_year = b.year print(my_year, my_month, my_day) print(type(my_year), type(my_month), type(my_day)) |
返回:
1 2 | 2017 3 1 <class 'int'> <class 'int'> <class 'int'> |
。
您可以这样对字符串下标,所以只需将int转换为字符串,然后执行此操作,然后使用
1 2 3 4 5 6 7 | data = str(20170305) year = int(data[0:4]) month = int(data[4:6]) day = int(data[6:8]) print(year, month, day) |
输出:
1 | 2017 3 5 |
号
如果你真的想把它转换成一个日期对象,@idlehands的答案会帮助你。
如果你只需要一天,你也可以:
1 2 3 | data = 20170305 day = abs(data) % 100 print(day) |
输出:
1 | 5 |
。
请注意,这不会保留
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | data = ['20170301', '20170302', '20170303', '20170304', '20170305'] yyyy_mm_dd = [] for date in data: year = int(date[:4]) month = int(date[4:6]) day = int(date[6:]) yyyy_mm_dd.append([year, month, day]) print(yyyy_mm_dd) # [[2017, 3, 1], [2017, 3, 2], [2017, 3, 3], [2017, 3, 4], [2017, 3, 5]] |
使用
1 2 3 4 | days = [sub[-1] for sub in yyyy_mm_dd] print(days) # [1, 2, 3, 4, 5] |
。