在python中自定义日期时间对象的时间
问题描述:
为了计费的目的,我拥有能根据需要生成必要数据的代码。在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的日期时间对象是不可变的,即date_obj.hour = 23
结果为AttributeError: attribute 'hour' of 'datetime.datetime' objects is not writable
。
相反,我们需要创建一个新的日期时间对象。 考虑这个作为指导:
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
也许吸尘器使用的日期时间的对象的'replace'方法,如'd.replace(小时= 0,分钟= 0,第二= 0,微秒= 0)' – bgporter
@bgporter同意,不知道那一个。 – DeepSpace
谢谢你们,它的工作 – Sparky