2016-09-14 194 views
1

我有時間字符串11:15am11:15pm。 我想將這個字符串轉換爲24小時格式的UTC時區。將時間字符串11:00 am/pm轉換爲24小時格式的UTC

從EST到UTC

例如:當我通過11:15am應該轉換成15:15當我通過11:15pm那麼它應該轉換爲3:15

我有這樣的代碼,我想:

def appointment_time_string(time_str): 
    import datetime 
    a = time_str.split()[0] 

    # b = re.findall(r"[^\W\d_]+|\d+",a) 

    # c = str(int(b[0]) + 4) + ":" + b[1] 
    # print("c", c) 



    in_time = datetime.datetime.strptime(a,'%I:%M%p') 

    print("In Time", in_time) 

    start_time = str(datetime.datetime.strftime(in_time, "%H:%M:%S")) 

    print("Start TIme", start_time) 

    if time_str.split()[3] == 'Today,': 
     start_date = datetime.datetime.utcnow().strftime("%Y-%m-%dT") 
    elif time_str.split()[3] == 'Tomorrow,': 
     today = datetime.date.today() 
     start_date = (today + datetime.timedelta(days=1)).strftime("%Y-%m-%dT") 

    appointment_time = str(start_date) + str(start_time) 

    return appointment_time 

x = appointment_time_string(time_str) 
print("x", x) 

但是這僅僅是轉換爲24小時不是UTC。

回答

1

要轉換的時間爲12小時至24小時的格式,你可以使用下面的代碼:

from datetime import datetime 
new_time = datetime.strptime('11:15pm', '%I:%M%p').strftime("%H:%M") 
# new_time: '23:15' 

爲了時間從EST轉換爲UTC,最可靠的方法是使用第三方庫pytz 。請參閱How to convert EST/EDT to GMT?瞭解更多詳情

+0

我得到了這部分,現在我需要將其轉換爲UTC時區 –

+0

在哪個時區是目前? –

+0

這是在EST時區並希望UTC –

0

使用提供的選項/解決方案開發了以下腳本以滿足我的要求。

高清appointment_time_string(time_str):

import datetime 
    import pytz 

    a = time_str.split()[0] 

    in_time = datetime.datetime.strptime(a,'%I:%M%p') 

    start_time = str(datetime.datetime.strftime(in_time, "%H:%M:%S")) 

    if time_str.split()[3] == 'Today,': 
     start_date = datetime.datetime.utcnow().strftime("%Y-%m-%d") 
    elif time_str.split()[3] == 'Tomorrow,': 
     today = datetime.date.today() 
     start_date = (today + datetime.timedelta(days=1)).strftime("%Y-%m-%d") 

    appointment_time = str(start_date) + " " + str(start_time) 

    # print("Provided Time", appointment_time) 

    utc=pytz.utc 
    eastern=pytz.timezone('US/Eastern') 
    fmt='%Y-%m-%dT%H:%M:%SZ' 
    # testeddate = '2016-09-14 22:30:00' 

    test_date = appointment_time 

    dt_obj = datetime.datetime.strptime(test_date,'%Y-%m-%d %H:%M:%S') 
    dt_str = datetime.datetime.strftime(dt_obj, '%m/%d/%Y %H:%M:%S') 
    date=datetime.datetime.strptime(dt_str,"%m/%d/%Y %H:%M:%S") 
    date_eastern=eastern.localize(date,is_dst=None) 
    date_utc=date_eastern.astimezone(utc) 

    # print("Required Time", date_utc.strftime(fmt)) 

    return date_utc.strftime(fmt) 
相關問題