将YYYYMMDD转换/拆分为python中包含年,月,日的数据

时间:2018-01-12 19:43:13

标签: python python-3.x

我的数据看起来像这样,我只需要使用几天。如何将int YYYYMMDD拆分为三个整数YYYY,MM,DD

YYYYMMDD
20170301
20170302
20170303
20170304
20170305

3 个答案:

答案 0 :(得分:4)

编辑:刚才注意到OP只想要这一天。如果您不想将字符串解释为datetime对象,@ chrisz的答案就更简单了。

就在这一天:

my_date= '20170301'
my_day = int(my_date[-2:])

[-2:]表示将字符串切片,从倒数第二个字符到结尾,返回'01',然后按int()转换为整数。

原始回答:

如果您想将日期解释为其他参考的datetime对象,请使用strptime模块中的datetime

INPUT:

import datetime
my_str = '20170301'
my_date = datetime.datetime.strptime(my_str,'%Y%m%d')
print(my_date)
print(type(my_date))

输出:

2017-03-01 00:00:00
<class 'datetime.datetime'>

现在您可以解释datetime对象了。您现在可以轻松获取年,月,日:

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))

返回:

2017 3 1
<class 'int'> <class 'int'> <class 'int'>

答案 1 :(得分:2)

您可以像这样下标字符串,所以只需将您的int转换为字符串,然后执行此操作,然后使用class Weapon { public: Weapon(std::string const &name) : name(name) {} virtual ~Weapon() = default; Weapon(Weapon const&) = delete; Weapon& operator=(Weapon const&) = delete; virtual void attack() const = 0; std::string getName() const; private: std::string const name; }; int()

转换回来
str()

输出:

data = str(20170305)

year = int(data[0:4])
month = int(data[4:6])
day = int(data[6:8])

print(year, month, day)

如果您真的想将其转换为日期对象,@ Idlehands的答案将对您有所帮助。

如果你只需要这一天,你也可以这样做:

2017 3 5 

输出:

data = 20170305
day = abs(data) % 100
print(day)

请注意,这不会保留5 格式,您必须考虑到这一点。

答案 2 :(得分:1)

使用for循环,您可以提取年,月和日,并将它们转换为整数。

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]]

使用list comprehensionyyyy_mm_dd提取日期:

days = [sub[-1] for sub in yyyy_mm_dd]

print(days)
# [1, 2, 3, 4, 5]