2016-04-22 52 views
0

为了计费的目的,我拥有能根据需要生成必要数据的代码。在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) 

有人让我知道如何实现这一目标。

回答

1

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 
+0

也许吸尘器使用的日期时间的对象的'replace'方法,如'd.replace(小时= 0,分钟= 0,第二= 0,微秒= 0)' – bgporter

+0

@bgporter同意,不知道那一个。 – DeepSpace

+0

谢谢你们,它的工作 – Sparky