バージョンごとのドキュメント一覧

B.1. 日付/時刻入力の解釈 #

<title>Date/Time Input Interpretation</title>

Date/time input strings are decoded using the following procedure. 日付/時刻入力文字列は以下の手続きを使って解読します。

  1. Break the input string into tokens and categorize each token as a string, time, time zone, or number. 入力文字列をトークンに分割し、そしてそれぞれのトークンを文字列、時刻、時間帯、または数値というように分類します。

    1. If the numeric token contains a colon (<literal>:</literal>), this is a time string. Include all subsequent digits and colons. 数値トークンにコロン(:)が含まれている場合は、時刻文字列です。 そこに続く全ての数字とコロンを含みます。

    2. If the numeric token contains a dash (<literal>-</literal>), slash (<literal>/</literal>), or two or more dots (<literal>.</literal>), this is a date string which might have a text month. If a date token has already been seen, it is instead interpreted as a time zone name (e.g., <literal>America/New_York</literal>). 数値トークンにハイフン(-)、スラッシュ(/)、または2つ以上のドット(.)が含まれている場合は、テキストの月名がある日付文字列です。 日付トークンがすでに現れている場合は代わりに、時間帯名として解釈されます(例えばAmerica/New_York)。

    3. If the token is numeric only, then it is either a single field or an ISO 8601 concatenated date (e.g., <literal>19990113</literal> for January 13, 1999) or time (e.g., <literal>141516</literal> for 14:15:16). トークンが数値だけの場合、それは単項、もしくはISO 8601の連結形式の日付(例:1999年1月13日を示す19990113)、あるいは時刻(例:14:15:16を示す141516)のいずれかです。

    4. If the token starts with a plus (<literal>+</literal>) or minus (<literal>-</literal>), then it is either a numeric time zone or a special field. トークンがプラス記号(+)あるいはマイナス記号(-)で始まっている場合は、数値形式の時間帯フィールドか特殊なフィールドです。

  2. If the token is an alphabetic string, match up with possible strings: もしトークンがアルファベット文字列の場合、以下のように可能性のある文字列と照合されます。

    1. See if the token matches any known time zone abbreviation. These abbreviations are supplied by the configuration file described in <xref linkend="datetime-config-files"/>. トークンが既知の時間帯省略形と一致するかどうかを調べます。 これらの短縮形はB.4で記述する設定ファイルで提供されます。

    2. If not found, search an internal table to match the token as either a special string (e.g., <literal>today</literal>), day (e.g., <literal>Thursday</literal>), month (e.g., <literal>January</literal>), or noise word (e.g., <literal>at</literal>, <literal>on</literal>). 見つからなかった場合は、そのトークンに対し特殊文字列(たとえばtoday)、曜日(たとえばThursday)、月(たとえばJanuary)、ノイズ(たとえばaton)に一致するかどうか、内部テーブルを検索します。

    3. If still not found, throw an error. それでも探し出せなかった場合、エラーを返します。

  3. When the token is a number or number field: トークンが数値あるいは数値フィールドの場合を以下に示します。

    1. If there are eight or six digits, and if no other date fields have been previously read, then interpret as a <quote>concatenated date</quote> (e.g., <literal>19990118</literal> or <literal>990118</literal>). The interpretation is <literal>YYYYMMDD</literal> or <literal>YYMMDD</literal>. トークンが8桁または6桁、かつ、以前に他のどのような日付フィールドも読まれていない場合は、連結された日付(例えば、19990118または990118)として解釈されます。 その解釈方法はYYYYMMDDまたはYYMMDDです。

    2. If the token is three digits and a year has already been read, then interpret as day of year. もしトークンが3桁で年が既に読み込まれている場合は年内の経過日数と解釈されます。

    3. If four or six digits and a year has already been read, then interpret as a time (<literal>HHMM</literal> or <literal>HHMMSS</literal>). 4桁または6桁の場合で年が既に読み込まれている時は時刻(HHMMまたはHHMMSS)と解釈されます。

    4. If three or more digits and no date fields have yet been found, interpret as a year (this forces yy-mm-dd ordering of the remaining date fields). 3桁以上の場合、かつ、どの日付フィールドもまだ見つかっていない場合は年と解釈されます (この場合、残る日付フィールドの順序は強制的にyy-mm-ddと解釈されます)。

    5. Otherwise the date field ordering is assumed to follow the <varname>DateStyle</varname> setting: mm-dd-yy, dd-mm-yy, or yy-mm-dd. Throw an error if a month or day field is found to be out of range. さもなければ、日付フィールドの順序は、DateStyleの設定mm-dd-yy、dd-mm-yy、yy-mm-ddに従うものと仮定されます。 月や月内の日のフィールドが範囲外であれば、エラーになります。

  4. If BC has been specified, negate the year and add one for internal storage. (There is no year zero in the Gregorian calendar, so numerically 1 BC becomes year zero.) もしBCが指定された場合は内部格納用に年を負の数にして1を加えます (グレゴリオ暦にはゼロ年がないので、数値的には1BC(紀元前1年)がゼロ年になります)。

  5. If BC was not specified, and if the year field was two digits in length, then adjust the year to four digits. If the field is less than 70, then add 2000, otherwise add 1900. BCが指定されず年フィールドの長さが2桁の場合、年は4桁になるよう調整されます。 そのフィールドが70未満の場合は2000が加えられますが、その他の場合には1900が加えられます。

    ヒント

    Gregorian years AD 1&ndash;99 can be entered by using 4 digits with leading zeros (e.g., <literal>0099</literal> is AD 99). (例えば、西暦99年を0099のように)グレゴリオ暦の西暦元年から99年までは、ゼロを前に付加して4桁で入力することができます。