我的数据看起来像这样,我只需要使用几天。如何将int YYYYMMDD拆分为三个整数YYYY,MM,DD
YYYYMMDD
20170301
20170302
20170303
20170304
20170305
答案 0 :(得分:4)
编辑:刚才注意到OP只想要这一天。如果您不想将字符串解释为datetime
对象,@ chrisz的答案就更简单了。
就在这一天:
my_date= '20170301'
my_day = int(my_date[-2:])
[-2:]
表示将字符串切片,从倒数第二个字符到结尾,返回'01',然后按int()
转换为整数。
原始回答:
如果您想将日期解释为其他参考的datetime
对象,请使用strptime
模块中的datetime
。
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 comprehension
从yyyy_mm_dd
提取日期:
days = [sub[-1] for sub in yyyy_mm_dd]
print(days)
# [1, 2, 3, 4, 5]