2016-09-14 4 views
1

時間文字列11:15amまたは11:15pmがあります。 この文字列を24時間形式のUTCタイムゾーンに変換しようとしています。たとえば、UTC時刻午前1​​1時00分に24時間形式でUTCに変換する

にEST FROM

:私は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) 

をしかし、これはただではないUTCに24時間に変換されます。あなたは、コードの下に使用することができ、24時間形式に12時間から時間に変換するために

答えて

1

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) 
関連する問題