2016-06-21 93 views
0

的12小時時間格式轉換爲24小時格式,我得到了如下所示的結果列表。從python代碼將python

list1 = [{'start': 'Mon12', 'end': '3:30'}, {'start': '7', 'end': 
'10:30'}] 

在這裏,我需要將上面的list1轉換爲24小時以下的日期格式。

list2 = [{'start': 12, 'end': 1530}, {'start': 1900, 'end': 2230}] 

如何在python中做到這一點?

+9

你將如何區分 '3:30' 是'15:30' 不是 '3:30'? – Jerzyk

+0

list1是否應該包含'Mon12',還是應該只包含'12'? – andrew

+0

它應該包含'Mon12' – user1335606

回答

0

首先,您應該區分am/pm,如上述註釋中所述。

但是,如果你知道所有的這些時間是下午,由上面的輸出列表的建議,那麼你可以通過每個值迭代剝離不想要的字符,並添加1200,如下圖所示:

list1 = [{'start' : 'Mon12', 'end' : '3:30'}, 
    {'start' : '7', 'end' : '10:30'}] 

def shift24(listofdict): 
    shift = 1200 
    resultlist = listofdict 
    # loop through list of dictionaries, then through each dictionary 
    for d in resultlist: 
     for key in d: 

     # create a mask by stripping each value of numbers 
     # (uses a list comp of numerical ASCII characters) 

     mask = d[key].strip(''.join([chr(x) for x in range(48,58)])) 

     # use that mask to get just the numbers 

     maskstrip = d[key].replace(mask,'') 

     # evaluate the length of string and convert to right format 
     # assuming if len(str) < 3: we just have the hours and need 
     # to mulitply by 100 

     if len(maskstrip) < 3: 
      result = ('%04d' % (int(maskstrip) * 10**2)) 
     else: 
      result = ('%04d' % int(maskstrip)) 

     # shift these values by 1200 hours and return list 
     #use str() if you want to output strings not integers 

     d[key] = int(result) + shift 

    return resultlist 

print(shift24(list1)) 

輸出將是:

[{'start': 2400, 'end': 1530}, {'start': 1900, 'end': 2230}] 

希望幫助,變化到什麼適合您的需求