Jak zaokrąglić datetime do poprzedniej godziny? na przykład:Zaokrąglij datetime do poprzedniej godziny
print datetime.now().replace(microsecond=0)
>> 2017-01-11 13:26:12.0
zaokrąglić w dół do poprzedniej godziny: 2017-01-11 12:00:00.0
Jak zaokrąglić datetime do poprzedniej godziny? na przykład:Zaokrąglij datetime do poprzedniej godziny
print datetime.now().replace(microsecond=0)
>> 2017-01-11 13:26:12.0
zaokrąglić w dół do poprzedniej godziny: 2017-01-11 12:00:00.0
Biorąc chcesz rundzie aż do godziny, można po prostu zastąpić minutes
, seconds
i minutes
wszystko do zera:
print(datetime.now().replace(microsecond=0,second=0,minute=0))
Jeśli chcesz zaokrąglić w dół do poprzednie godzin (jak podano w przykładzie 2017-01-11 13:26:12.0
do 2017-01-11 12:00:00.0
) wymienić microseconds
, seconds
i minutes
z 0
, a potem odjąć jedną godzinę z nim:
from datetime import datetime, timedelta
print(datetime.now().replace(microsecond=0,second=0,minute=0)-timedelta(hours=1))
przykład, w powłoce:
$ 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
Najpierw musisz sprawdzić, czy minuty/sekundy/mikrosekundy nie są równe 0. W przeciwnym razie zaokrąglymy '2017-01-11 16: 00: 00' do" 2017-01-11 15: 00: 00 ". – chepner
@chepner: Nie rozumiem dlaczego? OP prosi o * poprzednią * godzinę. Biorąc pod uwagę, że jest to "12: 00: 00" dokładnie, poprzedni jest "11: 00: 00" –
Zaokrąglanie w dół zwykle nie jest stosowane do wartości, która jest już poprawną wartością zaokrągloną. '12: 00: 00' jest wartością zaokrągloną,' 12: 00: 01' nie jest. – chepner
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)
Jeśli Twoja data to "2017-01-11 00: 11: 22", czy chcesz, aby twoja data była poprzedniego dnia? Czy musisz wziąć pod uwagę czas letni? –
nie, chcę, żeby to było "2017-01-11 00: 00: 00' – DougKruger
@DougKruger: Jestem nieco zdezorientowany: mówisz, że chcesz zaokrąglić do * poprzedniej * godziny, ale w swoim komentarzu, wydaje się, że tylko zaokrąglasz. Czy tak jest tylko na początku dnia? Czy mogę coś przeoczyć? –