2017-01-11 36 views
5

Làm cách nào để giảm giờ thành giờ trước? ví dụ:Làm tròn ngày giờ xuống giờ trước

print datetime.now().replace(microsecond=0) 
>> 2017-01-11 13:26:12.0 

tròn xuống đến giờ theo thời gian: 2017-01-11 12:00:00.0

+2

Nếu ngày của bạn là '2017-01-11 00: 11: 22', bạn có muốn ngày của mình vào ngày hôm trước không? Bạn có cần cân nhắc Giờ tiết kiệm ánh sáng ban ngày không? –

+0

không, tôi muốn nó là '2017-01-11 00: 00: 00' – DougKruger

+0

@DougKruger: Tôi hơi bối rối: bạn nói bạn muốn làm tròn xuống * * giờ trước đó, nhưng trong nhận xét của bạn, bạn dường như chỉ làm tròn xuống. Đây chỉ là trường hợp vào đầu ngày? Hay tôi bỏ qua điều gì đó? –

Trả lời

10

Với bạn muốn tròn xuống đến giờ, bạn chỉ có thể thay thế minutes, secondsminutes tất cả để không:

print(datetime.now().replace(microsecond=0,second=0,minute=0)) 

Nếu bạn muốn làm tròn xuống trước giờ (như đã nêu trong ví dụ 2017-01-11 13:26:12.0-2017-01-11 12:00:00.0) Bạn thay microseconds, secondsminutes với 0, và sau đó trừ đi một giờ từ nó:

from datetime import datetime, timedelta 

print(datetime.now().replace(microsecond=0,second=0,minute=0)-timedelta(hours=1)) 

Ví dụ trong vỏ:

$ python3 
Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from datetime import datetime, timedelta 
>>> print(datetime.now().replace(microsecond=0,second=0,minute=0)-timedelta(hours=1)) 
2017-01-11 16:00:00 
+0

Trước tiên, bạn cần phải kiểm tra xem phút/giây/micro giây chưa được 0. Nếu không, bạn sẽ làm tròn '2017-01-11 16: 00: 00' xuống còn '2017-01-11 15: 00: 00'. – chepner

+0

@chepner: Tôi không hiểu tại sao? OP yêu cầu * * giờ trước đó. Do chính xác là ‘12: 00: 00', trước đó là '11: 00: 00' –

+0

Làm tròn thường không được áp dụng cho giá trị đã là giá trị làm tròn hợp lệ. '12: 00: 00' là giá trị được làm tròn, '12: 00: 01' thì không. – chepner

2
from datetime import datetime, timedelta 

n = datetime.now() - timedelta(hours=1) 
new_date = datetime(year=n.year, month=n.month, day=n.day, hour=n.hour) 
Các vấn đề liên quan