日付と時間

The date and time functionality provided by Babel lets you format standard Python datetime, date and time objects and work with timezones.

日付と時間フォーマット設定

babel.dates.format_datetime(datetime=None, format='medium', tzinfo=None, locale=default_locale('LC_TIME'))

所与のモードに従ってフォーマットされた日付を返します。

>>> dt = datetime(2007, 4, 1, 15, 30)
>>> format_datetime(dt, locale='en_US')
u'Apr 1, 2007, 3:30:00 PM'

タイムゾーンを表示する必要がある任意のパターンについては、サードパーティ pytz タイムゾーンを明示的に指定するためには、パッケージが必要です:

>>> format_datetime(dt, 'full', tzinfo=get_timezone('Europe/Paris'),
...                 locale='fr_FR')
u'dimanche 1 avril 2007 \xe0 17:30:00 heure d\u2019\xe9t\xe9 d\u2019Europe centrale'
>>> format_datetime(dt, "yyyy.MM.dd G 'at' HH:mm:ss zzz",
...                 tzinfo=get_timezone('US/Eastern'), locale='en')
u'2007.04.01 AD at 11:30:00 EDT'
パラメータ
  • datetime -- ♪the datetime 相手が None 現在の日時を使用します

  • format -- “Full”、“Long”、“Medium”または“Short”のうちの1つ、またはカスタム日時パターン

  • tzinfo -- 表示時間のタイムゾーンに適用する

  • locale -- A Locale オブジェクトまたはエリア設定識別子

babel.dates.format_date(date=None, format='medium', locale=default_locale('LC_TIME'))

所与のモードに従ってフォーマットされた日付を返します。

>>> d = date(2007, 4, 1)
>>> format_date(d, locale='en_US')
u'Apr 1, 2007'
>>> format_date(d, format='full', locale='de_DE')
u'Sonntag, 1. April 2007'

If you don't want to use the locale default formats, you can specify a custom date pattern:

>>> format_date(d, "EEE, MMM d, ''yy", locale='en')
u"Sun, Apr 1, '07"
パラメータ
  • date -- ♪the date あるいは…。 datetime 相手が None 現在の日付を使用します

  • format -- “Full”、“Long”、“Medium”または“Short”のうちの1つ、またはカスタム日時パターン

  • locale -- A Locale オブジェクトまたはエリア設定識別子

babel.dates.format_time(time=None, format='medium', tzinfo=None, locale=default_locale('LC_TIME'))

所与のモードに従ってフォーマットされた時間に戻ります。

>>> t = time(15, 30)
>>> format_time(t, locale='en_US')
u'3:30:00 PM'
>>> format_time(t, format='short', locale='de_DE')
u'15:30'

領域を使用してデフォルトフォーマットを設定したくない場合、カスタム時間モードを指定することができます:

>>> format_time(t, "hh 'o''clock' a", locale='en')
u"03 o'clock PM"

タイムゾーンを表示する必要がある任意のモードについては、タイムゾーンを明示的に指定しなければならない:

>>> t = datetime(2007, 4, 1, 15, 30)
>>> tzinfo = get_timezone('Europe/Paris')
>>> t = tzinfo.localize(t)
>>> format_time(t, format='full', tzinfo=tzinfo, locale='fr_FR')
u'15:30:00 heure d\u2019\xe9t\xe9 d\u2019Europe centrale'
>>> format_time(t, "hh 'o''clock' a, zzzz", tzinfo=get_timezone('US/Eastern'),
...             locale='en')
u"09 o'clock AM, Eastern Daylight Time"

この例に示すように、この関数が datetime.datetime 値は,文字列中の実時間をフォーマットするように調整される tzinfo パラメータもし datetime “幼稚”(すなわち、関連する時間帯情報がない)であれば、UTCにあると仮定する。

これらのタイムゾーン計算は not 値のタイプが datetime.time 日付情報がないため、サマータイムが有効であるか否かの情報がない場合には、所与の時間が異なる時間領域で何に変換されるかを決定することができない。これは時間値がそのままであることを意味します tzinfo パラメータは、必要に応じてタイムゾーン名を表示するためにのみ使用される:

>>> t = time(15, 30)
>>> format_time(t, format='full', tzinfo=get_timezone('Europe/Paris'),
...             locale='fr_FR')
u'15:30:00 heure normale d\u2019Europe centrale'
>>> format_time(t, format='full', tzinfo=get_timezone('US/Eastern'),
...             locale='en_US')
u'3:30:00 PM Eastern Standard Time'
パラメータ
  • time -- ♪the time あるいは…。 datetime 相手が None UTCの現在時刻を使用します

  • format -- “Full”、“Long”、“Medium”または“Short”のうちの1つ、またはカスタム日時パターン

  • tzinfo -- 表示時間のタイムゾーンに適用する

  • locale -- A Locale オブジェクトまたはエリア設定識別子

babel.dates.format_timedelta(delta, granularity='second', threshold=0.85, add_direction=False, format='long', locale=default_locale('LC_TIME'))

与えられた領域によって設定されたルールに従って時間増分を返す.

>>> format_timedelta(timedelta(weeks=12), locale='en_US')
u'3 months'
>>> format_timedelta(timedelta(seconds=1), locale='es')
u'1 segundo'

提示された最低単位を変更するために、粒度パラメータを提供することができ、この最低単位は、デフォルトで秒である。

>>> format_timedelta(timedelta(hours=3), granularity='day',
...                  locale='en_US')
u'1 day'

閾値パラメータは、提示が次のより高い単位に切り替わる値を決定するために使用されてもよい。閾値係数が高いほど、プレゼンテーションは後で切り替えられることを示している。例:

>>> format_timedelta(timedelta(hours=23), threshold=0.9, locale='en_US')
u'1 day'
>>> format_timedelta(timedelta(hours=23), threshold=1.1, locale='en_US')
u'23 hours'

さらに、日付が過去であるか将来であるかを通知する指示情報を提供することもできる。

>>> format_timedelta(timedelta(hours=1), add_direction=True, locale='en')
u'in 1 hour'
>>> format_timedelta(timedelta(hours=-1), add_direction=True, locale='en')
u'1 hour ago'

Formatパラメータ制御プレゼンテーションのコンパクトさや幅:

>>> format_timedelta(timedelta(hours=3), format='short', locale='en')
u'3 hr'
>>> format_timedelta(timedelta(hours=3), format='narrow', locale='en')
u'3h'
パラメータ
  • delta -- A timedelta オブジェクトは,そのオブジェクトがフォーマットする時間差,あるいは秒単位の増分を表す. int

  • granularity -- 表示すべき最小単位を決定することは、値は、“年”、“月”、“周”、“日”、“時間”、“分”または“秒”のうちの1つであってもよい。

  • threshold -- 次のより高い単位の係数に切り替えることにしました

  • add_direction -- この標識が設定されていれば True 返却値には方向情報が含まれる.例えば、正の時間増分は、それが未来であることに関する情報を含み、負の時間増分は、過去の値に関する情報を含むであろう。

  • format -- フォーマットは、“狭い”、“短い”、“長い”であってもよい。(“Medium”は廃止され、現在は互換性を保つために“Long”に変換されています)

  • locale -- A Locale オブジェクトまたはエリア設定識別子

babel.dates.format_skeleton(skeleton, datetime=None, tzinfo=None, fuzzy=True, locale=default_locale('LC_TIME'))

所与のモードに従ってフォーマットされた時間および/または日付に戻る。

スケルトンはCLDRデータで定義されており,簡単な短/長/中フォーマットに比べて大きな柔軟性を提供しているが,使用はやや困難である.順序または句読点を持たない日付/時間記号を使用して定義され、所与の領域設定に適したフォーマットにマッピングされる。

>>> t = datetime(2007, 4, 1, 15, 30)
>>> format_skeleton('MMMEd', t, locale='fr')
u'dim. 1 avr.'
>>> format_skeleton('MMMEd', t, locale='en')
u'Sun, Apr 1'
>>> format_skeleton('yMMd', t, locale='fi')  # yMMd is not in the Finnish locale; yMd gets used
u'1.4.2007'
>>> format_skeleton('yMMd', t, fuzzy=False, locale='fi')  # yMMd is not in the Finnish locale, an error is thrown
Traceback (most recent call last):
    ...
KeyError: yMMd

骨格をモデルに解析した後 format_datetime 呼び出されるので,すべてのタイムゾーン処理などはこれと同様である.

パラメータ
  • skeleton -- CLDRデータで定義された日時フレーム.

  • datetime -- ♪the time あるいは…。 datetime 相手が None UTCの現在時刻を使用します

  • tzinfo -- 表示時間のタイムゾーンに適用する

  • fuzzy -- 骨格が見つからなければ、それに十分に近い骨格の選択が許される。

  • locale -- A Locale オブジェクトまたはエリア設定識別子

babel.dates.format_interval(start, end, skeleton=None, tzinfo=None, fuzzy=True, locale=default_locale('LC_TIME'))

2つのインスタンス間の時間間隔は、領域設定ルールに従ってフォーマットされる。

>>> format_interval(date(2016, 1, 15), date(2016, 1, 17), "yMd", locale="fi")
u'15.–17.1.2016'
>>> format_interval(time(12, 12), time(16, 16), "Hm", locale="en_GB")
'12:12–16:16'
>>> format_interval(time(5, 12), time(16, 16), "hm", locale="en_US")
'5:12 AM – 4:16 PM'
>>> format_interval(time(16, 18), time(16, 24), "Hm", locale="it")
'16:18–16:24'

開始時刻が終了時刻に等しい場合、間隔のフォーマットは、その時刻と同様である。

>>> format_interval(time(16, 18), time(16, 18), "Hm", locale="it")
'16:18'

未知のフレームワークは“デフォルト”フォーマットに後退します。

>>> format_interval(date(2015, 1, 1), date(2017, 1, 1), "wzq", locale="ja")
'2015/01/01~2017/01/01'
>>> format_interval(time(16, 18), time(16, 24), "xxx", locale="ja")
'16:18:00~16:24:00'
>>> format_interval(date(2016, 1, 15), date(2016, 1, 17), "xxx", locale="de")
'15.01.2016 – 17.01.2016'
パラメータ
  • start -- 最初の即時(日時/日時)

  • end -- 第二の即時(日時/日時)

  • skeleton -- フォーマットのための“主幹フォーマット”。

  • tzinfo -- 使用するtzinfo(追加されていない場合)

  • fuzzy -- 骨格が見つからなければ、それに十分に近い骨格の選択が許される。

  • locale -- エリアにオブジェクトまたは識別子を設定します。

戻り値

フォーマット間隔.

時間帯機能

babel.dates.get_timezone(zone=None)

名前でタイムゾーンを検索し、タイムゾーンに戻ります。戻るタイムゾーンのオブジェクトは pytz それに対応しています tzinfo インタフェースは,日付操作を用いたすべてのバーベルタ関数とともに利用可能である.

時間帯が未知であれば LookupError みんな育てられました。もし zone はい。 None ローカルエリアオブジェクトを返します。

パラメータ

zone -- 調べる時間帯の名前です。タイムゾーンオブジェクト自体が入力されると、MITは不変に戻る。

babel.dates.get_timezone_gmt(datetime=None, width='long', locale='en_US', return_z=False)

与えられたものに戻る datetime フォーマットは文字列のオブジェクトであり,GMTとのオフセットを示す.

>>> dt = datetime(2007, 4, 1, 15, 30)
>>> get_timezone_gmt(dt, locale='en')
u'GMT+00:00'
>>> get_timezone_gmt(dt, locale='en', return_z=True)
'Z'
>>> get_timezone_gmt(dt, locale='en', width='iso8601_short')
u'+00'
>>> tz = get_timezone('America/Los_Angeles')
>>> dt = tz.localize(datetime(2007, 4, 1, 15, 30))
>>> get_timezone_gmt(dt, locale='en')
u'GMT-07:00'
>>> get_timezone_gmt(dt, 'short', locale='en')
u'-0700'
>>> get_timezone_gmt(dt, locale='en', width='iso8601_short')
u'-07'

長いフォーマットは、領域設定に依存し、例えば、フランスでは、GMTではなく、頭文字の略語UTC文字列を使用する:

>>> get_timezone_gmt(dt, 'long', locale='fr_FR')
u'UTC-07:00'

バージョン 0.9 で追加.

パラメータ
  • datetime -- ♪the datetime 相手が None UTCの現在の日時を使用します

  • width -- “Long”または“Short”または“iso 8601”または“iso 8601_Short”

  • locale -- ♪the Locale オブジェクトまたは領域設定文字列

  • return_z -- 真または偽;ローカル時間オフセットが0のとき、関数はインジケータ“Z”を返す

babel.dates.get_timezone_location(dt_or_tzinfo=None, locale='en_US', return_city=False)

“位置フォーマット”を用いてタイミング領域の表示形式に戻る。

結果は、時間帯に関連する国/地域および都市のローカル表示名に依存する:

>>> tz = get_timezone('America/St_Johns')
>>> print(get_timezone_location(tz, locale='de_DE'))
Kanada (St. John’s) Zeit
>>> print(get_timezone_location(tz, locale='en'))
Canada (St. John’s) Time
>>> print(get_timezone_location(tz, locale='en', return_city=True))
St. John’s
>>> tz = get_timezone('America/Mexico_City')
>>> get_timezone_location(tz, locale='de_DE')
u'Mexiko (Mexiko-Stadt) Zeit'

タイムゾーンが単一のタイムゾーンのみを使用する国/地域に関連付けられている場合、ローカル化された国/地域名のみが返される:

>>> tz = get_timezone('Europe/Berlin')
>>> get_timezone_name(tz, locale='de_DE')
u'Mitteleurop\xe4ische Zeit'

バージョン 0.9 で追加.

パラメータ
  • dt_or_tzinfo -- ♪the datetime あるいは…。 tzinfo オブジェクト、オブジェクトは、タイムゾーンを決定する; None 現在の日時をUTCとする.

  • locale -- ♪the Locale オブジェクトまたは領域設定文字列

  • return_city -- TrueまたはFalseは,Trueであれば,タイムゾーンのサンプル都市(位置)を返す.

戻り値

位置フォーマットを使用したローカル化タイムゾーン名

babel.dates.get_timezone_name(dt_or_tzinfo=None, width='long', uncommon=False, locale='en_US', zone_variant=None, return_zone=False)

タイミング領域に戻る局所化表示名。タイムゾーンはご利用いただけます datetime あるいは…。 tzinfo 物体です。

>>> dt = time(15, 30, tzinfo=get_timezone('America/Los_Angeles'))
>>> get_timezone_name(dt, locale='en_US')
u'Pacific Standard Time'
>>> get_timezone_name(dt, locale='en_US', return_zone=True)
'America/Los_Angeles'
>>> get_timezone_name(dt, width='short', locale='en_US')
u'PST'

もしこの関数が tzinfo 対象は具体的なものではありません datetime なお、戻る表示名は、サマータイムとは無関係である。例えば、これは、タイムゾーンを選択するために使用されてもよく、またはDST変更にわたって繰り返し発生するイベントの時間を設定するために使用されて

>>> tz = get_timezone('America/Los_Angeles')
>>> get_timezone_name(tz, locale='en_US')
u'Pacific Time'
>>> get_timezone_name(tz, 'short', locale='en_US')
u'PT'

利用可能なタイムゾーンが局所化されて名前が表示されず、タイムゾーンが単一のタイムゾーンのみを使用する国/地域に関連付けられている場合、国/地域の名前が返され、領域設定に従ってフォーマット設定が行われる:

>>> tz = get_timezone('Europe/Berlin')
>>> get_timezone_name(tz, locale='de_DE')
u'Mitteleurop\xe4ische Zeit'
>>> get_timezone_name(tz, locale='pt_BR')
u'Hor\xe1rio da Europa Central'

一方、国/地域が複数のタイムゾーンを使用する場合、都市も表示に含まれる。

>>> tz = get_timezone('America/St_Johns')
>>> get_timezone_name(tz, locale='de_DE')
u'Neufundland-Zeit'

現在、すべてのタイムゾーンとすべての地域が短いフォーマットをサポートしているわけではありません。これは、各時間帯が各地域に短いコードを持っているわけではないからだ。この場合、それは現在長いフォーマットに戻っている。

より多くの情報については、参照されたい LDML Appendix J: Time Zone Display Names

バージョン 0.9 で追加.

バージョン 1.0 で変更: 増列する. zone_variant 応援します。

パラメータ
  • dt_or_tzinfo -- ♪the datetime あるいは…。 tzinfo オブジェクト、オブジェクトは、タイムゾーンを決定する; tzinfo オブジェクトの場合、結果は、名前が汎用的であること、すなわちサマータイムとは無関係であることを示し、 None 現在の日付をUTCとする.

  • width -- “多頭”や“空頭”

  • uncommon -- 廃棄され無視されています

  • zone_variant -- defines the zone variation to return. By default the variation is defined from the datetime object passed in. If no datetime object is passed in, the 'generic' variation is assumed. The following values are valid: 'generic', 'daylight' and 'standard'.

  • locale -- ♪the Locale オブジェクトまたは領域設定文字列

  • return_zone -- 本物か偽物か。TRUEである場合、関数は長時間領域IDを返す。

babel.dates.get_next_timezone_transition(zone=None, dt=None)

タイミングエリアに与えられた場合には、戻ります。 TimezoneTransition オブジェクトは,発生する次のタイムゾーン変換に関する情報を保持する.例えば、これは、次のDST変更の時間および外観を検出するために使用されてもよい。

変換は与えられたDateTimeオブジェクトに対して計算される.使用日以降の次の移行。トランジションが見つからない場合は、返却値は None それがそうです。

方法が返された時間帯は変換情報しか提供できません。 get_timezone() 機能します。

パラメータ
  • zone -- 変換された時間帯を探すべきです。提供されていない場合、現地時間帯が使用される。

  • dt -- その後に次の移行の日付を探さなければならない。与えられていない場合、現在の時間が仮定される。

babel.dates.UTC

UTCのタイムゾーンオブジェクト。

babel.dates.LOCALTZ

コンピュータローカルタイムゾーンのタイムゾーンオブジェクト。

データアクセス

babel.dates.get_period_names(width='wide', context='stand-alone', locale='en_US')

戻り領域には,使用する天段(AM/PM)の名前を設定する.

>>> get_period_names(locale='en_US')['am']
u'AM'
パラメータ
  • width -- 使用する幅は、“略語”、“狭い”、“幅”のうちの1つであってもよい

  • context -- 文脈、“フォーマット”または“独立”

  • locale -- ♪the Locale オブジェクトまたは領域設定文字列

babel.dates.get_day_names(width='wide', context='format', locale='en_US')

指定されたフォーマットの領域に使用する日付名を返します。

>>> get_day_names('wide', locale='en_US')[1]
u'Tuesday'
>>> get_day_names('short', locale='en_US')[1]
u'Tu'
>>> get_day_names('abbreviated', locale='es')[1]
u'mar.'
>>> get_day_names('narrow', context='stand-alone', locale='de_DE')[1]
u'D'
パラメータ
  • width -- 使用する幅は、“幅”“略語”“短い”“狭い”のいずれか

  • context -- 文脈、“フォーマット”または“独立”

  • locale -- ♪the Locale オブジェクトまたは領域設定文字列

babel.dates.get_month_names(width='wide', context='format', locale='en_US')

指定されたフォーマットのエリアに戻って使用する月名を設定します。

>>> get_month_names('wide', locale='en_US')[1]
u'January'
>>> get_month_names('abbreviated', locale='es')[1]
u'ene.'
>>> get_month_names('narrow', context='stand-alone', locale='de_DE')[1]
u'J'
パラメータ
  • width -- 使用する幅は、“幅”、“略語”または“狭い”のうちの1つ

  • context -- 文脈、“フォーマット”または“独立”

  • locale -- ♪the Locale オブジェクトまたは領域設定文字列

babel.dates.get_quarter_names(width='wide', context='format', locale='en_US')

指定されたフォーマットのエリア設定に使用する四半期名を返します。

>>> get_quarter_names('wide', locale='en_US')[1]
u'1st quarter'
>>> get_quarter_names('abbreviated', locale='de_DE')[1]
u'Q1'
>>> get_quarter_names('narrow', locale='de_DE')[1]
u'1'
パラメータ
  • width -- 使用する幅は、“幅”、“略語”または“狭い”のうちの1つ

  • context -- 文脈、“フォーマット”または“独立”

  • locale -- ♪the Locale オブジェクトまたは領域設定文字列

babel.dates.get_era_names(width='wide', locale='en_US')

指定されたフォーマットの領域設定に使用する紀元名を返します。

>>> get_era_names('wide', locale='en_US')[1]
u'Anno Domini'
>>> get_era_names('abbreviated', locale='de_DE')[1]
u'n. Chr.'
パラメータ
  • width -- 使用する幅は、“幅”、“略語”、“狭い”であってもよい

  • locale -- ♪the Locale オブジェクトまたは領域設定文字列

babel.dates.get_date_format(format='medium', locale='en_US')

戻り領域は、フォーマットを指定するための日付フォーマットモードを設定する。

>>> get_date_format(locale='en_US')
<DateTimePattern u'MMM d, y'>
>>> get_date_format('full', locale='de_DE')
<DateTimePattern u'EEEE, d. MMMM y'>
パラメータ
  • format -- 使用するフォーマットは、“Full”、“Long”、“Medium”または“Short”のいずれかであってもよい

  • locale -- ♪the Locale オブジェクトまたは領域設定文字列

babel.dates.get_datetime_format(format='medium', locale='en_US')

戻り領域は、フォーマットを指定するための日時フォーマットモードを設定する。

>>> get_datetime_format(locale='en_US')
u'{1}, {0}'
パラメータ
  • format -- 使用するフォーマットは、“Full”、“Long”、“Medium”または“Short”のいずれかであってもよい

  • locale -- ♪the Locale オブジェクトまたは領域設定文字列

babel.dates.get_time_format(format='medium', locale='en_US')

戻り領域は、フォーマットを指定するための時間フォーマットモードを設定する。

>>> get_time_format(locale='en_US')
<DateTimePattern u'h:mm:ss a'>
>>> get_time_format('full', locale='de_DE')
<DateTimePattern u'HH:mm:ss zzzz'>
パラメータ
  • format -- 使用するフォーマットは、“Full”、“Long”、“Medium”または“Short”のいずれかであってもよい

  • locale -- ♪the Locale オブジェクトまたは領域設定文字列

基本解析

babel.dates.parse_date(string, locale='en_US')

文字列から日付を解析します。

この関数は、領域に設定された日付フォーマットをプロンプトとして使用して、文字列における日付フィールドの表示順序を決定する。

>>> parse_date('4/1/04', locale='en_US')
datetime.date(2004, 4, 1)
>>> parse_date('01.04.2004', locale='de_DE')
datetime.date(2004, 4, 1)
パラメータ
  • string -- 日付を含む文字列

  • locale -- A Locale オブジェクトまたはエリア設定識別子

babel.dates.parse_time(string, locale='en_US')

文字列から時間を解析する.

この関数は、領域に設定された時間フォーマットをプロンプトとして使用して、文字列における時間フィールドの表示順序を決定する。

>>> parse_time('15:30:00', locale='en_US')
datetime.time(15, 30)
パラメータ
  • string -- 時間を含む文字列

  • locale -- A Locale オブジェクトまたはエリア設定識別子

戻り値

解析の時間

戻り値の型

time

babel.dates.parse_pattern(pattern)

日付、時間、日時フォーマットパターンを解析します。

>>> parse_pattern("MMMMd").format
u'%(MMMM)s%(d)s'
>>> parse_pattern("MMM d, yyyy").format
u'%(MMM)s %(d)s, %(yyyy)s'

パターンは、単引用符に文字文字列を含むことができる:

>>> parse_pattern("H:mm' Uhr 'z").format
u'%(H)s:%(mm)s Uhr %(z)s'

実際の単引用符は、2つの隣接する単引用符文字を使用することによって使用することができる:

>>> parse_pattern("hh' o''clock'").format
u"%(hh)s o'clock"
パラメータ

pattern -- 分析するためのフォーマットモデル