给出一个整数输入。有什么方法可以检查日期时间是否可以使用给定的整数。我想生成所有这样的日期并返回最大的日期。我编写的代码包含太多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格式化以简化代码来实现上述目的。
答案 0 :(得分:0)
您可以将其与正则表达式匹配,以适合日期格式:
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即可:
from datetime import datetime
try:
date = datetime.strptime(testString, "%d-%m %H:%M")
except ValueError:
print("Incorrect format or invalid date")
请注意,ValueError都将针对不正确的格式和“错误的”日期(如第13个月)引发,因此,如果要进行其他处理,请首先检查格式,例如使用正则表达式。
希望有帮助。
答案 1 :(得分:0)
实际上简单得多:
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
,我只是用它来显示它接受的参数的顺序。