2015-02-22 8 views
1

Я, кажется, не понимаю, как я должен использовать функцию datetime.timedelta Python для вычисления даты завтрашнего дня.datetime.timedelta возвращает неожиданные результаты?

Пример:

from datetime import datetime, timedelta print(datetime.now()) print(datetime.now() + timedelta(hours=24))

Выходы:

2015-02-22 14:51:11.515000 2015-02-23 05:18:30.728056

Но вторая линия должна быть больше похожа: 2015-02-23 14:51:11

Вы можете увидеть это в действии here.

ОБНОВЛЕНИЕ Спасибо всем за ваши комментарии! По-видимому, timedelta разбит на Python 2.7.2 [1] - было бы неплохо узнать, в какой версии это было исправлено.

[1] Благодаря J.F. Sebastian за указание на то, что я был неправ: timedelta сломана на Repl.it в Empythoned

+0

Weird ... кажется, прекрасно работать на моей машине –

+0

Ваших код тоже работает на моей машине. – Vinkal

+0

Посылайте ссылку в описании, чтобы увидеть проблему на repl.it слишком –

ответ

1

Реализация timedelta там нарушена:

timedelta(hours=24) 
=> datetime.timedelta(0, 52039, 213056) 

Должно быть 1 дней (или 86400 секунд, это 52039 секунд и 213056 микросекунд)

Кроме того, промежуточные значения неудачу:

timedelta(seconds=65000) 
Internal error: Assertion failed: 0 <= temp && temp < 1000000 
0

Питона вы связаны, кажется, сломан, результаты на моей машине:

>>> from datetime import datetime, timedelta                                  
>>> print(datetime.now())                                       
2015-02-22 15:03:44.447179                                      
>>> for i in range(24):                                       
...  print(datetime.now() + timedelta(hours=i))                                
...                                            
2015-02-22 15:03:46.383497                                      
2015-02-22 16:03:46.383625                                      
2015-02-22 17:03:46.383677                                      
2015-02-22 18:03:46.383721                                      
2015-02-22 19:03:46.383765                                      
2015-02-22 20:03:46.383819                                      
2015-02-22 21:03:46.383841                                      
2015-02-22 22:03:46.383866                                      
2015-02-22 23:03:46.383887                                      
2015-02-23 00:03:46.383909                                      
2015-02-23 01:03:46.383930                                      
2015-02-23 02:03:46.383952                                      
2015-02-23 03:03:46.383973                                      
2015-02-23 04:03:46.383995                                      
2015-02-23 05:03:46.384017                                      
2015-02-23 06:03:46.384063                                      
2015-02-23 07:03:46.384094                                      
2015-02-23 08:03:46.384212                                      
2015-02-23 09:03:46.384240                                      
2015-02-23 10:03:46.384262                                      
2015-02-23 11:03:46.384290                                      
2015-02-23 12:03:46.384318                                      
2015-02-23 13:03:46.384337                                      
2015-02-23 14:03:46.384388 

В то время как на связанный интерпретаторе

2015-02-22 15:01:16.352000 
2015-02-22 15:01:16.353000 
2015-02-22 16:01:16.354000 
Internal error: Assertion failed: 0 <= temp && temp < 1000000 
Смежные вопросы