有效日期时间python

2024-09-30 08:31:04 发布

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

给定一个整数输入。有没有办法用给定的整数来检查日期时间是否可能。我想生成所有这样的日期并返回最大的一个。我写的代码包含了太多的if-else情况,并且是唯一有效的时间约束。在

import random
sortime = []
hr1 = []
hr2 = []
min1 = []
min2 = []
sec1 = []
sec2 = []
index1 = 0
index2 = 0
index3 = 0
index4 = 0
index5 = 0
index6 = 0

ztn = [0,1,2,3,4,5,6,7,8,9]

anysix = [random.randint(0,9) for x in range(6)]
print(anysix)

def index_clk(any_six, index_pos, index, timelist, y):
    global index1

    for x in any_six:

        if x <= y:
            index_pos.append(x)

    if index_pos == []:
        print("no clock time possible")

    index = max(index_pos)
    index1 = index

    timelist.append(index)
    print(timelist)

    any_six.remove(index)
    print(any_six)

    index = index1

print(index_clk(any_six = anysix, index_pos = hr1, index = index1, timelist = sortime, y = 2))
##print(index1)

if index1<2:
    print(index_clk(any_six = anysix, index_pos = hr2, index = index2, timelist = sortime, y = 9))
else:
    print(index_clk(any_six = anysix, index_pos = hr2, index = index2, timelist = sortime, y = 3))

sortime.append(":")

print(index_clk(any_six = anysix, index_pos = min1, index = index3, timelist = sortime, y = 5))

print(index_clk(any_six = anysix, index_pos = min2, index = index4, timelist = sortime, y = 9))
sortime.append(":")

print(index_clk(any_six = anysix, index_pos = sec1, index = index5, timelist = sortime, y = 5))

print(index_clk(any_six = anysix, index_pos = sec2, index = index6, timelist = sortime, y = 9))

for i in sortime:
    print(i, end = "")

我可以使用上面的if-else实现DD-MM HH:MM格式。出于好奇,如果可以使用一些datetime对象和python中的格式来简化代码来实现上述功能。在


Tags: posindexifanyelseprintsixappend
2条回答

其实要简单得多:

import datetime, random

dates = []
for _ in range(3):
    dates.append([random.randint(0, 9) for x in range(6)])
print(dates)

try:
    for i, date in enumerate(dates):
        dates[i] = datetime.datetime(year=date[0], month=date[1], day=date[2], hour=date[3], minute=date[4], second=date[5])
    print(max(dates))

except ValueError as e:
    print(e)

except中的打印将打印日期的问题。如果所有日期都正确生成,则将打印其中哪一个日期是最大日期。
您不必使用显式参数将它们发送到datetime.datetime,我只是用它来显示它接受的参数的顺序。在

您只需将其与正则表达式匹配,以适应日期格式:

if re.match(r"^[0-9]{2}-[0-9]{2}\ [0-9]{2}:[0-9]{2}", testString):
    print('it is in "DD-MM HH:MM" format')

但这只检查格式,如果日期有效,则不检查,因为只需在检查格式之后或之前将其设置为datetime:

^{pr2}$

请注意,对于格式不正确和“错误”的日期(如第13个月)都会引发ValueError,因此,如果您想要不同的处理方式,请首先检查格式,例如使用正则表达式。在

希望有帮助。在

相关问题 更多 >

    热门问题