Python倒计时,但以年、月、周、日、小时、分钟、秒为单位

2024-06-01 11:37:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望我的一生以倒计时的形式展现出来。不幸的是,Python datetime只允许天。无法对转换进行编程

这就是我所尝试的:

#!/usr/bin/env python3

import time
import datetime
from dateutil.relativedelta import relativedelta
from datetime import timedelta


while True:
        lebenszeit = datetime.datetime(2085,7,6) - datetime.datetime.now()
        jahr     = str(int((lebenszeit.days)/365.25))
        monate   = str('%0.2d' %(int((((lebenszeit.days)*365)-int((lebenszeit.days)/365))*12)))
        tage     = str('%0.2d' %(int(((((lebenszeit.days)/365)-int((lebenszeit.days)/365))*12)-((((lebenszeit.days)/365)-int((lebenszeit.days)/365))*12)*30)))
        print(jahr+"."+monate+"."+tag)

        i = i+1

你可以看到非常复杂的

我希望有一个倒计时,应该像这样(年、月、周、日、小时、分钟、秒):

68.02.04.29.07.40.44

Tags: fromimportdatetimebinusr编程days形式
3条回答

您的代码无法运行。但这里有一些提示:

import datetime


life = datetime.datetime(2085,7,6)
now = datetime.datetime.now()
diff = life - now
# use in a loop, that's a lot to print
for i in range(int(diff.total_seconds()) + 1):
    one_sec_step = life - datetime.timedelta(seconds=i)
    # one_sec_step = now + datetime.timedelta(seconds=i)
    print(one_sec_step.strftime("%y.%m.%W.%d.%H.%M.%S"))

如何获取年、月、日、时、分、秒:

# datetime.datetime object has no attribute week

life = datetime.datetime(2085,7,6)
print(life.year, life.month, life.day, life.hour, life.minute, life.second)

now = datetime.datetime.now()
print(now.year, now.month, now.day, now.hour, now.minute, now.second)

感谢用户8349697, 但是这个脚本运行在一个真正的时钟上。因此,“for循环”总是与CPU的计算速度相关联。我想避免这种情况

我可以自由地把凯文斯的剧本分解到几秒钟

import datetime

lebenszeit  = datetime.datetime(2085,6,7,0,0,0) - datetime.datetime.now()
alldays = lebenszeit.days
allsec  = lebenszeit.seconds

jahr     = int((alldays)/365.25)
alldays -= int(jahr * 365.25)
months   = int((alldays)/30.0)
alldays -= months * 30
weeks    = int((alldays)/7.0)
alldays -= weeks * 7
days     = alldays365.25

hours    = int((allsec)/60/60)
allsec  -= int(hours * 60*60)
minutes  = int((allsec)/60)
allsec  -= int(minutes *60)
secounds = int(allsec)

print(f"{jahr}.{months:02d}.{weeks:02d}.{days:02d}.{hours:02d}.{minutes}.{secounds}")

我会这样做的。请注意,“月”是近似值,假设每月30天。只使用“周”会更准确

import time
import datetime
from datetime import timedelta

lebenszeit  = datetime.datetime(2085,7,6) - datetime.datetime.now()
alldays = lebenszeit.days

jahr     = int((alldays)/365.25)
alldays -= int(jahr * 365.25)
months   = int((alldays)/30.0)
alldays -= months * 30
weeks    = int((alldays)/7.0)
alldays -= weeks * 7
days     = alldays

print(f"{jahr}.{months:02d}.{weeks:02d}.{days:02d}")

相关问题 更多 >