6

私はstrptimeこのように使用しています:

import time
time.strptime("+10:00","+%H:%M")

ただし、「+ 10:00」は「-10:00」(UTCからのタイムゾーンオフセット)である可能性もあり、上記のコマンドが機能しなくなります。使用できます

time.strptime("+10:00"[1:],"%H:%M")

しかし、理想的には、フォーマットコードの前にワイルドカードを使用する方が読みやすいと思います。

そのようなワイルドカード演算子はPythonのstrptime/に存在しstrftimeますか?

4

2 に答える 2

4

ワイルドカード演算子はありません。でサポートされているフォーマットディレクティブのリストstrptimeは、ドキュメントにあります。

探しているのは、フォームまたは%zのタイムゾーンの表現をサポートするformatディレクティブです。しばらくの間サポートされてきましたが、Python3.2以降でのみサポートされます。+HHMM-HHMMdatetime.strftimestrptime

Python 2では、これを処理する最良の方法は、おそらくを使用しdatetime.datetime.strptime、負のオフセットを手動で処理して、datetime.timedelta:を取得することです。

import datetime

tz = "+10:00"

def tz_to_timedelta(tz):
    min = datetime.datetime.strptime('', '')
    try:
        return -(datetime.datetime.strptime(tz,"-%H:%M") - min)
    except ValueError:
        return datetime.datetime.strptime(tz,"+%H:%M") - min

print tz_to_timedelta(tz)

Python 3.2では、を削除し:て使用します%z

import time
tz = "+10:00"
tz_toconvert = tz[:3] + tz[4:]
tz_struct_time = time.strptime(tz_toconvert, "%z")
于 2012-03-31T23:58:32.350 に答える
0

一貫した日付/時刻フォーマットによって生成されたファイルのリストから日付/時刻を解析するdatetime-globを開発しました。モジュールのドキュメントから:

>>> import datetime_glob
>>> matcher = datetime_glob.Matcher(
                         pattern='/some/path/*%Y-%m-%dT%H-%M-%SZ.jpg')

>>> matcher.match(path='/some/path/some-text2016-07-03T21-22-23Z.jpg')
datetime_glob.Match(year = 2016, month = 7, day = 3, 
                    hour = 21, minute = 22, second = 23, microsecond = None)

>>> match.as_datetime()
datetime.datetime(2016, 7, 3, 21, 22, 23)
于 2018-03-25T13:15:07.800 に答える