Мне нужно иметь возможность преобразовывать время в объект времени, который я получаю из базы данных sql в python. Вот текущий код python, который я использую без каких-либо преобразований. Мне нужно добавить 2 и 1/2 часа к времени.
def getLastReport(self, sql):
self.connectDB()
cursor.execute(sql)
lastReport = cursor.fetchall()
date = lastReport[0][0].strftime('%Y-%m-%d %H:%M UTC')
dataset_id = int(lastReport[0][1])
cursor.close()
DATABASE.close()
return date, dataset_id
Вы посмотрели модуль datetime? http://docs.python.org/library/datetime.html
Преобразуйте время SQL в datetime и создайте объект timedelta в течение 2,5 часов. Затем добавьте два.
from datetime import datetime
dt = datetime.strptime( date, '%Y-%m-%d %H:%M' )
dt_plus_25 = dt + datetime.timedelta( 0, 2*60*60 + 30*60 )
Попробуйте это (переключите sqlite3 с любым интерфейсом db, который вы используете):
f= lastReport[0][0]
newtime = sqlite3.Time(f.hour + 2, f.minute + 30, f.second, f.microsecond)
Я думал, что добавление datetime.timedelta(0, 2.5 * 60 * 60), как и Igancio, было бы лучшим решением, но я получаю:
'unsupported operand type(s) for +: 'datetime.time' and 'datetime.timedelta'.
Добавить datetime.timedelta(0, 2.5*60*60)
.
Обычно я использую сторонний модуль, dateutil, для такого рода вещей. Это делает такое изменение во времени намного проще и понятнее:
from datetime import datetime
или измените код наdatetime.datetime.strptime