В веб-приложении, которое я пишу для существующей базы данных, мне нужно вычислить разницу между текущим временем и отметкой времени, хранящейся в базе данных (я знаю, что в текстовом поле это глупо).Вот мой класс sqlalchemy Ban
и соответствующий метод.
class Ban(base):
__tablename__= 'bans'
id= Column('banID', Integer, primary_key=True)
unban_timestamp= Column('UNBAN', Text)
banned_steamid= Column('ID', Text, ForeignKey('rp_users.steamid'))
banned_name= Column('NAME', Text)
banner_steamid= Column('BANNER_STEAMID', Text, ForeignKey('rp_users.steamid'))
banner_name= Column('BANNER', Text)
reason= Column('REASON', Text)
def unbanned_in(self, mode):
if self.unban_timestamp == '0':
return 'Never'
else:
now= datetime.datetime.utcnow()
time= datetime.datetime.fromtimestamp(int(self.unban_timestamp))
if now > time:
return 'Expired'
else:
remaining= time - now
if mode=='readable':
return remaining
elif mode=='int':
return str(remaining.seconds).zfill(10)
Мне нужны как целочисленные, так и красивые строковые представления, потому что я буду представлять это в html-таблице, а javascript нужен простой способ сортировкиЭто.Проблема, с которой я сталкиваюсь, состоит в том, что целые числа и строки не совпадают, как вы можете видеть на этом скриншоте здесь:
, если кто-то может понять, почему выводтак облажался, что был бы оценен!если вам потребуется дополнительная информация для ответа на мой вопрос, я с удовольствием добавлю ее.
отредактируйте
для записи в верхней части скриншота отметки времени unbanned_inэто 1320247970
если я выполню это через свою функцию, это результат, который я получаю
>>> ban = session.query(db.Ban).filter_by(id=3783).one()
>>> print ban.unbanned_in('int'), ban.unbanned_in('readable')
0000049044 2 days, 13:37:24.179045