[英]Customizing time of the datetime object in python
出于计费目的,我有一些代码,可以根据需要生成必要的数据。
但是我目前面临一个时间间隔问题,我有一个想法可以通过添加默认时间值来解决。
确切地说,请考虑以下日期时间对象值。
2016-03-22 05:36:07.703078
2016-04-21 05:36:07.703078
一个是开始日期的值,而另一个是结束日期的值。
现在,我需要将开始日期设置为“ 2016-03-22 00:00:00”,将结束日期设置为“ 2016-04-21 23:59:59”。
这是代码,我已使用它创建开始日期和结束日期。
# begin date and end date set
begin = date - dateutil.relativedelta.relativedelta(months=1)
print(begin)
print(type(begin))
end = date - dateutil.relativedelta.relativedelta(days=1)
print(end)
有人让我知道实现此目标的方法。
Python的datetime对象是不可变的,即date_obj.hour = 23
结果
AttributeError: attribute 'hour' of 'datetime.datetime' objects is not writable
。
相反,我们需要创建一个新的datetime对象。 将此视为指导:
from datetime import datetime
from dateutil import relativedelta
orig_start = datetime.now()
orig_end = datetime.now() + relativedelta.relativedelta(months=1)
print(orig_start)
print(orig_end)
mod_start = datetime(year=orig_start.year,
month=orig_start.month,
day=orig_start.day,
hour=0, minute=0, second=0)
mod_end = datetime(year=orig_end.year,
month=orig_end.month,
day=orig_end.day,
hour=23, minute=59, second=59)
# or even better as suggested in the comments:
mod_end = orig_end.replace(hour=23, minute=59, second=59, microsecond=0)
print(mod_start)
print(mod_end)
输出:
2016-04-22 16:11:08.171845
2016-05-22 16:11:08.171845
2016-04-22 00:00:00
2016-05-22 23:59:59
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.