Найти - Пользователи
Полная версия: Странное поведение времени datetime
Начало » Python для экспертов » Странное поведение времени datetime
1
sinopteek
Пишу софтину, которая в автоматическом режиме обрабатывает записи, одним из параметров в записи является время.
Столкнулся со странным поведением при форматирования.
Для иллюстрации написал простенький пример.
a = datetime.datetime.now()
for i in range(10):
print a.microsecond
b = ('%02d:%02d:%02f' % (a.hour,a.minute,1.*a.second+a.microsecond/10e6))
c = ('%d-%02d-%02d' % (a.year,a.month,a.day))
print c, b
time.sleep(0.1)
Собственно, что удивительно: значение a.microsecond не меняется, а вот сумма(точнее правая её составляющая) при первом вычислении получается больше, чем должна быть в 10 раз. Что приводит в некоторых случаях, к тому, что количество секунд может быть больше 60 :D. Что собственно совсем не радует. Не заметил бы, но периодически стало вываливаться при записи в базу.
2011-04-05 16:43:43.865000
865000
2011-04-05 16:43:43.086500
865000
2011-04-05 16:43:43.086500
865000
....
Как решать пока не нашёл.
Андрей Светлов
Ваша ошибка не воспроизводится. Все работает как и ожидалось.
За исключением того что микросекунда — это 1e-6 а не 1e-7
sinopteek
Андрей Светлов
Ваша ошибка не воспроизводится. Все работает как и ожидалось.
Может что-то специфичное? У меня 2.6.6(win32) на win7x64.
Андрей Светлов
За исключением того что микросекунда — это 1e-6 а не 1e-7
Точно, сразу не заметил =)

p.s. Забавно: решил проверить на старом питоне(2.5.4) - работает без ошибок. Решил перепроверить на том, на котором возникала проблема - сегодня всё работает :/
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB