You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python开发Discord抽奖命令结束时间戳显示1970年问题求助

Discord抽奖命令时间戳显示1970年问题解决方法

问题根因

你传递给datetime.datetime.utcfromtimestamp()的参数是抽奖持续的秒数(比如用户输入1h时该值为3600),而该方法要求输入的是Unix时间戳,即从1970年1月1日0点UTC到目标时间的累计秒数。数值很小的秒数会直接对应1970年的日期,就是你看到的异常效果:
异常截图

修复方案

只需要修改Embed生成部分的代码,计算出抽奖实际结束的UTC时间再传入即可:

# 删掉原来的timestamp = time逻辑,替换为以下内容
# 计算结束时间:当前UTC时间 + 抽奖持续秒数
end_time = datetime.datetime.utcnow() + datetime.timedelta(seconds=time)
embed = nextcord.Embed(
    title="Gewinnspiel!",
    description=f"Reagiere mit :tada: um teilzunehmen!\nPreis: {prize}\n Dauer: {answers[1]}\nHosted von: {ctx.author.mention}",
    timestamp=end_time,
    color=ctx.author.color
)

额外注意事项

你贴出的convert函数代码存在缩进错误,所有函数体内容都没有缩进,如果你本地代码也是同样的问题,需要先修正缩进保证函数逻辑正常运行:

# 修正缩进后的convert函数
def convert(time):
    pos = ["s", "m", "h", "d"]
    time_dict = {"s": 1, "m": 60, "h": 3600, "d": 3600 * 24}
    unit = time[-1]
    if unit not in pos:
        return -1
    try:
        val = int(time[:-1])
    except:
        return -2
    return val * time_dict[unit]

内容的提问来源于stack exchange,提问作者Navis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:36:03