gpt4 book ai didi

Python timedelta 收到意外结果

转载 作者:太空宇宙 更新时间:2023-11-03 11:09:47 27 4
gpt4 key购买 nike

在我为现有数据库编写的 Web 应用程序中,我需要计算现在和存储在数据库中的时间戳之间的差异(在文本字段中,这很愚蠢,我知道)。这是我的 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 需要一种简单的方法来对其进行排序。我面临的问题是整数和字符串不匹配,如您在此处的屏幕截图中所见:

example html table

如果有人能理解为什么输出如此糟糕,我们将不胜感激!如果您需要更多信息来回答我的问题,我很乐意添加。

编辑

对于屏幕截图顶部的记录,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

最佳答案

如果你想得到timenow之间的秒数,使用

剩余天数 * 24 * 3600 + 剩余秒数而不仅仅是 remaining.seconds

关于Python timedelta 收到意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7951804/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com