Python 找出机器人运行的天数、小时数、分和秒数? 使用proc.oneshot(): 正常运行时间=时间增量(秒=时间()-proc.create_time()) 正常运行时间分钟,正常运行时间秒=divmod(正常运行时间秒,60) 正常运行时间-小时,正常运行时间-分钟=divmod(正常运行时间-分钟,60) 正常运行时间天数,正常运行时间小时=divmod(正常运行时间小时,24) 如果正常运行时间为秒: frmt_正常运行时间=“{:01}秒”。格式( int(正常运行时间(秒)) 如果正常运行时间为10分钟: frmt_正常运行时间=“{:01}分钟,{:01}秒”。格式( int(正常运行时间_分钟), int(正常运行时间(秒)) 如果正常运行时间为小时: frmt_正常运行时间=“{:01}小时,{:01}分钟,{:01}秒”。格式( int(正常运行时间/小时), int(正常运行时间_分钟), int(正常运行时间(秒)) 如果正常运行时间为\u天: frmt_正常运行时间='{:01}天、{:01}小时、{:01}分钟、{:01}秒'。格式( int(正常运行时间_天), int(正常运行时间/小时), int(正常运行时间_分钟), int(正常运行时间(秒)) 打印(frmt\U正常运行时间)

Python 找出机器人运行的天数、小时数、分和秒数? 使用proc.oneshot(): 正常运行时间=时间增量(秒=时间()-proc.create_time()) 正常运行时间分钟,正常运行时间秒=divmod(正常运行时间秒,60) 正常运行时间-小时,正常运行时间-分钟=divmod(正常运行时间-分钟,60) 正常运行时间天数,正常运行时间小时=divmod(正常运行时间小时,24) 如果正常运行时间为秒: frmt_正常运行时间=“{:01}秒”。格式( int(正常运行时间(秒)) 如果正常运行时间为10分钟: frmt_正常运行时间=“{:01}分钟,{:01}秒”。格式( int(正常运行时间_分钟), int(正常运行时间(秒)) 如果正常运行时间为小时: frmt_正常运行时间=“{:01}小时,{:01}分钟,{:01}秒”。格式( int(正常运行时间/小时), int(正常运行时间_分钟), int(正常运行时间(秒)) 如果正常运行时间为\u天: frmt_正常运行时间='{:01}天、{:01}小时、{:01}分钟、{:01}秒'。格式( int(正常运行时间_天), int(正常运行时间/小时), int(正常运行时间_分钟), int(正常运行时间(秒)) 打印(frmt\U正常运行时间),python,discord.py,bots,uptime,Python,Discord.py,Bots,Uptime,现在我想让它显示天数,但由于某些原因,目前它是23小时59分59秒,然后应该是1天。一秒钟后一天,一秒钟。一分钟后,1天1分钟。但目前,它似乎在24小时后重新启动,这让我相信我的工作方式有问题。你处理时间的方式,你需要 但是,您的代码不会显示“1天1秒”,因为中的格式字符串if uptime\u days:将始终包括小时和分钟 建议: from datetime import timedelta, datetime def uptime(create_time: datetime):

现在我想让它显示天数,但由于某些原因,目前它是23小时59分59秒,然后应该是1天。一秒钟后一天,一秒钟。一分钟后,1天1分钟。但目前,它似乎在24小时后重新启动,这让我相信我的工作方式有问题。

你处理时间的方式,你需要

但是,您的代码不会显示“1天1秒”,因为
中的格式字符串if uptime\u days:
将始终包括小时和分钟

建议:

from datetime import timedelta, datetime

def uptime(create_time: datetime):
    uptime = datetime.now() - create_time
    uptime_minutes, uptime_seconds = divmod(uptime.total_seconds(), 60)
    uptime_hours, uptime_minutes = divmod(uptime_minutes, 60)
    uptime_days, uptime_hours = divmod(uptime_hours, 24)

    time_parts = []

    if uptime_days:
        time_parts.append('{:01} Days'.format(int(uptime_days)))

    if uptime_hours:
        time_parts.append('{:01} Hours'.format(int(uptime_hours)))

    if uptime_minutes:
        time_parts.append('{:01} Minutes'.format(int(uptime_minutes)))

    if uptime_seconds:
        time_parts.append('{:01} Seconds'.format(int(uptime_seconds)))

    return ", ".join(time_parts)

print(uptime(datetime(2021, 2,11,16,20)))

我不太确定您的代码有什么问题,但我的方法如下:

从日期时间导入日期时间
bot=commands.bot(…)#或'discord.Client',取决于您使用的是什么
bot.uptime=datetime.utcnow()
在命令内部,只需获取增量并格式化它

@bot.command()
异步def正常运行时间(ctx):
now=datetime.utcnow()
delta=now-bot.uptime
#您可以随意设置格式
秒=整数(增量总秒数()
小时,余数=divmod(秒,3600)
分,秒=divmod(余数,60)
如果小时数>=24:
天,小时=divmod(小时,24)
message=f“正常运行时间:{days}天、{hours}小时、{minutes}分钟、{seconds}秒”
其他:
message=f“正常运行时间:{hours}小时、{minutes}分钟、{seconds}秒”
等待ctx发送(消息)

Total.seconds在哪里?当您第一次访问timedelta时。我已经做了一个演示,我会尝试一下,让你知道。