Python 3.x 从整数或字符串的简单日期时间转换
有没有一种简单的方法可以将开始和结束时间输入转换为一个均匀分隔的时间列表?输入可以是字符串或整数,格式为1000,“1000”,或2400hr格式的“10:00”。我已经设法以一种混乱的方式完成了这个任务,有没有一种更紧凑、更有效的方法来创建这个列表?您会注意到,我首先创建了一个数组,然后调用了.tolist(),以简化时间转换迭代。问题是1030或1015的输入需要转换为1050或1025以创建正确的间距,但是如果有一种方法,我可以调用datetime.timedelta或其他什么,并干净地创建数组Python 3.x 从整数或字符串的简单日期时间转换,python-3.x,Python 3.x,有没有一种简单的方法可以将开始和结束时间输入转换为一个均匀分隔的时间列表?输入可以是字符串或整数,格式为1000,“1000”,或2400hr格式的“10:00”。我已经设法以一种混乱的方式完成了这个任务,有没有一种更紧凑、更有效的方法来创建这个列表?您会注意到,我首先创建了一个数组,然后调用了.tolist(),以简化时间转换迭代。问题是1030或1015的输入需要转换为1050或1025以创建正确的间距,但是如果有一种方法,我可以调用datetime.timedelta或其他什么,并干净地创
start="1000"
end="1600"
total_minutes=(int(end[:2])*60)+int(end[2:])-(int(start[:2])*60)-
int(start[2:])
dog=list(range(0,int(total_minutes),25))
walk=dog_df["Walk Length"][dog_df.index[dog_df["Name"]==self.name][0]]
if walk=='half':
self.dogarr=np.array([(x-25,x,x+25,x+50) for x in dog])
elif walk=='full':
self.dogarr=np.array([(x-25,x,x+25,x+50,x+75,x+100) for x in dog])
else:
self.dogarr=np.array([(x,x+25,x+50) for x in dog])
if int(start[2])!=0:
start=start[:2]+str(int(int(start[2:])*1.667))
self.dogarr+=(int(start))
self.dogarr=self.dogarr.tolist()
z=0
while z<len(self.dogarr):
for timespot in self.dogarr[z].copy():
self.dogarr[z][self.dogarr[z].index(timespot)]=time.strftime('%H%M', time.gmtime(self.dogarr[z][self.dogarr[z].index(timespot)]*36))
z+=1
self.dogarr=np.array(self.dogarr)```
array([['1115', '1130', '1145', '1200'],
['1130', '1145', '1200', '1215'],
['1145', '1200', '1215', '1230'],
['1200', '1215', '1230', '1245'],
['1215', '1230', '1245', '1300']], dtype='<U4')
start=“1000”
end=“1600”
总分钟数=(int(end[:2])*60)+int(end[2:])-(int(start[:2])*60)-
int(开始[2:])
狗=列表(范围(0,整数(总分钟),25))
walk=dog_df[“walk Length”][dog_df.index[dog_df[“Name”]==self.Name][0]]
如果walk=='half':
self.dogarr=np.array([(x-25,x,x+25,x+50)表示狗中的x])
elif walk==“满”:
self.dogarr=np.array([(x-25,x,x+25,x+50,x+75,x+100)表示狗中的x])
其他:
self.dogarr=np.array([(x,x+25,x+50)表示狗中的x])
如果int(开始[2])=0:
start=start[:2]+str(int(int(start[2:])*1.667))
self.dogarr+=(int(开始))
self.dogarr=self.dogarr.tolist()
z=0
而z我相信您可以从任何数量的现有问题中找出解析时间的方法。您的问题的关键似乎是如何在一个范围内创建均匀分隔的时间。这里有一个简单的方法:
start = datetime.datetime(2018,12,20,10) # or use strptime etc.
end = datetime.datetime(2018,12,24,18)
count = 10
interval = (end - start) / count
dt = start
while dt <= end:
print(dt)
dt += interval
你的问题是问谢谢你的回答。我制作了一个与您的解决方案非常相似的解决方案,只是我使用了datetime.timedelta并将总秒数转换为分钟等等。@Bugbeeb:很好,您可以将其作为您自己问题的答案发布。
2018-12-20 10:00:00
2018-12-20 20:24:00
2018-12-21 06:48:00
2018-12-21 17:12:00
2018-12-22 03:36:00
2018-12-22 14:00:00
2018-12-23 00:24:00
2018-12-23 10:48:00
2018-12-23 21:12:00
2018-12-24 07:36:00
2018-12-24 18:00:00