2017-09-28 3 views
1

私は次のエラーを取得するdatetimeで "24"にすることができる時間文字列を使用するにはどうすればよいですか?

datetime.datetime.strptime("2824", "%d%H") 

次やろう:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python3.5/_strptime.py", line 510, in _strptime_datetime 
    tt, fraction = _strptime(data_string, format) 
    File "/usr/lib/python3.5/_strptime.py", line 346, in _strptime 
    data_string[found.end():]) 
ValueError: unconverted data remains: 4 

は、私の知る限り見ることができるように、これは「時間として「24」を使用しての代わりであります00 "となる。最終的に私のコードは次のようである:ここでは

tmp = datetime.datetime.strptime(timestamp, "%d%H") 

now = datetime.datetime.utcnow() 

start_datetime = datetime.datetime(
        now.year, 
        now.month, 
        tmp.day, 
        tmp.hour, 
        tmp.minute 
       ) 

、変数timestampは、DDが日付で、HHは時間で、HHは「24」の値を取ることができ、フォームのDDHH、の文字列です。この重要な問題にどのように対処すればよいですか?

+0

このような日付はどこから来ましたか? –

+1

24は_same_を00(つまり、与えられた日の始まり)としますか、それとも翌日の_00_を意味しますか? (日本のIIRCの伝統と同様)。 – MatsLindh

+0

@BillBell次のようなTAF(ターミナル飛行場予測)文字列で発生します。TAF EGPF 281657Z 2818/2918 15008KT 9999 FEW035 PROB40 TEMPO 2818/2824 9000 RA TEMPO 2900/2908 7000 RA PROB40 TEMPO 2902/2908 BKN012 BECMG 2907/2910 23012KT PROB30 TEMPO 2912/2918 8000 SHRA'。 TAF内の「2818/2824」のような文字列は、予測が有効である時間窓であり、時間窓の開始は29日で18:00であり、時間窓の終了は28日で24:00 。 – BlandCorporation

答えて

1
from datetime import datetime, timedelta 

ONE_DAY = timedelta(days=1) 

def parse_time(s): 
    if s.endswith("24"): 
     s = s[:-2] + "00"  
     return datetime.strptime(s, "%d%H") + ONE_DAY 

tmp = parse_time("2824") 

now = datetime.utcnow() 

start_datetime = datetime(
        now.year, 
        now.month, 
        tmp.day, 
        tmp.hour, 
        tmp.minute 
       ) 
print(start_datetime) 

>>> 
2017-09-29 00:00:00 
>>> 
関連する問題