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
相关产品推荐
相关产品推荐

