2016-04-22 89 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