## Tcl8.6.17/Tk8.6.17 Documentation > Tcl Commands > clock

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    clock — 日付と時刻の取得と操作 Obtain and manipulate dates and times
  構文 SYNOPSIS
  説明 DESCRIPTION
    clock add timeVal ?count unit...? ?-option value?
    clock clicks ?-option?
    clock format timeVal ?-option value...?
    clock microseconds
    clock milliseconds
    clock scan inputString ?-option value...?
    clock seconds
  假引数 PARAMETERS
    count
    timeVal
    unit
  指定項目 OPTIONS
    -base time
    -format format
    -gmt boolean
    -locale localeName
    -timezone zoneName
  CLOCK ARITHMETIC
  HIGH RESOLUTION TIMERS
  FORMATTING TIMES
  時刻の内部表現変換　SCANNING TIMES
  FORMAT GROUPS
    %a
    %A
    %b
    %B
    %c
    %C
    %d
    %D
    %e
    %Ec
    %EC
    %EE
    %Ex
    %EX
    %Ey
    %EY
    %g
    %G
    %h
    %H
    %I
    %j
    %J
    %k
    %l
    %m
    %M
    %N
    %Od, %Oe, %OH, %OI, %Ok, %Ol, %Om, %OM, %OS, %Ou, %Ow, %Oy
    %p
    %P
    %Q
    %r
    %R
    %s
    %S
    %t
    %T
    %u
    %U
    %V
    %w
    %W
    %x
    %X
    %y
    %Y
    %z
    %Z
    %%
    %+
  TIME ZONES
  地方化　 LOCALIZATION
  FREE FORM SCAN
    time
    date
    ISO 8601 point-in-time
    relative time
  SEE ALSO
  KEYWORDS
  COPYRIGHT

### NAME

clock — 日付と時刻の取得と操作 Obtain and manipulate dates and times

### 構文 SYNOPSIS

package require Tcl 8.5

clock add timeVal ?count unit...? ?-option value?

clock clicks ?-option?

clock format timeVal ?-option value...?

clock microseconds

clock milliseconds

clock scan inputString ?-option value...?

clock seconds

### 説明 DESCRIPTION

この clock 命令は時刻を表現する値を得たり調整したりする幾つかの操作を実行する｡この命令は､その命令によってどの様な活動が行われるかを定める幾つかの副命令に対応している｡ The clock command performs several operations that obtain and manipulate values that represent times. The command supports several subcommands that determine what action is carried out by the command.

clock add timeVal ?count unit...? ?-option value?
  秒を基にした整数で表した時刻に補正(負数も可)を加算する｡全貌の記載は CLOCK ARITHMETIC を参照のこと｡ Adds a (possibly negative) offset to a time that is expressed as an integer number of seconds. See CLOCK ARITHMETIC for a full description.

clock clicks ?-option?
  もし､ -option 引数が与えられないと､高精度時刻値をシステム依存の整数値で返す｡値の単位はシステムに依存するが､計算機の基本サイクルの様にシステムで利用できる最高精度のものである｡全貌の記載は HIGH RESOLUTION TIMERS を参照のこと｡ If no -option argument is supplied, returns a high-resolution time value as a system-dependent integer value. The unit of the value is system-dependent but should be the highest resolution clock available on the system such as a CPU cycle counter. See HIGH RESOLUTION TIMERS for a full description.

  もし､ -option 引数が -milliseconds であれば､命令は clock milliseconds に準じる(下の項を参照)｡この命令は､陳腐化されたもので､千分の一秒単位の計数を得るには clock milliseconds 命令の使用の方が好ましい｡ If the -option argument is -milliseconds, then the command is synonymous with clock milliseconds (see below). This usage is obsolete, and clock milliseconds is to be considered the preferred way of obtaining a count of milliseconds.

  もし､ -option 引数が -microseconds であれば､命令は clock microseconds に準じる(下の項を参照)｡この命令は､陳腐化されたもので､百万分の一秒単位の計数を得るには clock microseconds 命令の使用の方が好ましい｡ If the -option argument is -microseconds, then the command is synonymous with clock microseconds (see below). This usage is obsolete, and clock microseconds is to be considered the preferred way of obtaining a count of microseconds.

clock format timeVal ?-option value...?
  秒を基にした整数で表す表現から､使用者や外部の算譜の使用を意図した正式の書式にする｡全貌の記載は FORMATTING TIMES を参照のこと｡ Formats a time that is expressed as an integer number of seconds into a format intended for consumption by users or external programs. See FORMATTING TIMES for a full description.

clock microseconds
  現在時刻を百万分の一秒を基にした整数で表した数を戻す｡全貌の記載は HIGH RESOLUTION TIMERS を参照のこと｡ Returns the current time as an integer number of microseconds. See HIGH RESOLUTION TIMERS for a full description.

clock milliseconds
  現在時刻を千分の一秒を基にした整数で表した数を戻す｡全貌の記載は HIGH RESOLUTION TIMERS を参照のこと｡ Returns the current time as an integer number of milliseconds. See HIGH RESOLUTION TIMERS for a full description.

clock scan inputString ?-option value...?
  文字列で表現した時刻を調査し､秒を基にした整数を生成する｡全貌の記載は SCANNING TIMES を参照のこと｡ Scans a time that is expressed as a character string and produces an integer number of seconds. See SCANNING TIMES for a full description.

clock seconds
  現在時刻を秒を基にした整数で表した数で戻す｡ Returns the current time as an integer number of seconds.

#### 假引数 PARAMETERS

count
  時間を何かの単位で表した整数｡詳細は CLOCK ARITHMETIC を参照のこと｡ An integer representing a count of some unit of time. See CLOCK ARITHMETIC for the details.

timeVal
  clock 命令に渡す整数であって､1970年１月１日00:00 協定世界時と謂う特定の時点から経過した絶対時刻を表す秒数｡註意すべきは､秒の計数は如何なる閏秒も含まないことである; 全ての協定世界時の一日は厳密に 86400 秒である｡Tcl は､どれかの分の端数により協定世界時と同期する様に時間の進行を早めたり遅らして閏秒に対応する; そのデータの原型は59秒とか61秒を有する１分を使うのではない｡ An integer value passed to the clock command that represents an absolute time as a number of seconds from the epoch time of 1 January 1970, 00:00 UTC. Note that the count of seconds does not include any leap seconds; seconds are counted as if each UTC day has exactly 86400 seconds. Tcl responds to leap seconds by speeding or slowing its clock by a tiny fraction for some minutes until it is back in sync with UTC; its data model does not represent minutes that have 59 or 61 seconds.

unit
  seconds, minutes, hours, days, weeksR, months, years のどれか一つの単語､或はその様な単語の前に付く前置辞｡時間の期間を特定する為に数と結びつけて使われる､譬えば､ 3 seconds とか 1 year とか｡ One of the words, seconds, minutes, hours, days, weeks, months, or years, or any unique prefix of such a word. Used in conjunction with count to identify an interval of time, for example, 3 seconds or 1 year.

#### 指定項目 OPTIONS

-base time
  clock scan 命令内で表される､どの様な相対的時間も､ time に対する相対で与られることを指定する､ time は1970年１月１日00:00 協定世界時と謂う特定の時点からの名目上の秒の数値で現されなければならない｡ Specifies that any relative times present in a clock scan command are to be given relative to time. time must be expressed as a count of nominal seconds from the epoch time of 1 January 1970, 00:00 UTC.

-format format
  clock format 用の望ましい出力書式､又は､clock scan 用に望まれる入力書式を指定する｡書式文字列 format は､任意個数の百分率記号 (“%”) 以外の文字に､任意個数の百分率で始まる二文字の書式群を点在させて構成される｡許容される書式群と､その解釈は下の FORMAT GROUPS で記述する｡　　　 Specifies the desired output format for clock format or the expected input format for clock scan. The format string consists of any number of characters other than the per-cent sign (“%”) interspersed with any number of format groups, which are two-character sequences beginning with the per-cent sign. The permissible format groups, and their interpretation, are described under FORMAT GROUPS.

  clock format での､省略時設定の書式は次の通り 　　　 On clock format, the default format is

      %a %b %d %H:%M:%S %Z %Y

  clock scan では､ -format 指定の欠落は”自由書式の調査”が要求されている事を示す; 生じる事については､FREE FORM SCAN を参照のこと 　　　 On clock scan, the lack of a -format option indicates that a “free format scan” is requested; see FREE FORM SCAN for a description of what happens.

-gmt boolean
  もし､論理値 boolean が真値であると､ clock add, clock format, clock scan への時間指定は協定世界時 で処理されることを指定する｡もし､論理値 boolean が偽値であると､その処理の省略時設定は現地時間域である｡この命令は陳腐である; 現在の推奨方法では､協定世界時の指定は “-timezone :UTC” 若しくはそれと同等の方法で指定する｡ 　　　 If boolean is true, specifies that a time specified to clock add, clock format or clock scan should be processed in UTC. If boolean is false, the processing defaults to the local time zone. This usage is obsolete; the correct current usage is to specify the UTC time zone with “-timezone :UTC” or any of the equivalent ways to specify it.

-locale localeName
  現地-依存の時刻から数値への変換及び数値から時刻文字列への書式化(それと､グレゴリオ暦を採用した手順の日付計算)が､localeName により識別される地域情報で実施さるべきことを指定する｡地域情報の名称は､ msgcat 梱包に受入れ可能などれかであるか､手順の現在場所を表現する system と言う特別な名称であるか､Tcl の省略時設定の空文字である｡ 　　　 Specifies that locale-dependent scanning and formatting (and date arithmetic for dates preceding the adoption of the Gregorian calendar) is to be done in the locale identified by localeName. The locale name may be any of the locales acceptable to the msgcat package, or it may be the special name system, which represents the current locale of the process, or the null string, which represents Tcl's default locale.

  時刻の数値化と書式化を現地名で行う効果は FORMAT GROUPS の下での個別の書式群の記述の中で論じる｡時間計算についての現地名の効果については CLOCK ARITHMETIC の下で論じる｡ 　　　 The effect of locale on scanning and formatting is discussed in the descriptions of the individual format groups under FORMAT GROUPS. The effect of locale on clock arithmetic is discussed under CLOCK ARITHMETIC.

-timezone zoneName
  時間計算と､文字書式化と､文字書式から整数値への変換は zoneName で指定される時差域の為の規則に従って行われる｡許容される値とその解釈は､ TIME ZONES の処で論議する｡-timezone 引数を期待する副命令での､省略時設定は 現地の時差域 current time zone を使う｡現在の時間域は次の優先順位により決定される: 　 　 Specifies that clock arithmetic, formatting, and scanning are to be done according to the rules for the time zone specified by zoneName. The permissible values, and their interpretation, are discussed under TIME ZONES. On subcommands that expect a -timezone argument, the default is to use the current time zone. The current time zone is determined, in order of preference, by:

  1. 環境変数の TCL_TZ 　　　 the environment variable TCL_TZ.

  2. 環境変数の TZ 　　　 the environment variable TZ.

  3. Windows ではコントロール パネルから時差域を設定する｡ 　　　 on Windows systems, the time zone settings from the Control Panel.

どれも設定していないときは､C 言語の localtime と mktime 函数を使って､現地時間とグリニッジの時刻の差から時間を変換しようと試みる｡32ビット系では､この方法は不具合になり易い､特にwindowの32ビット整数で表し得る範囲外の (凡1902年から2037年頃)の時期になる時に不具合になり得る｡ 　　　 If none of these is present, the C localtime and mktime functions are used to attempt to convert times between local and Greenwich. On 32-bit systems, this approach is likely to have bugs, particularly for times that lie outside the window (approximately the years 1902 to 2037) that can be represented in a 32-bit integer.

### CLOCK ARITHMETIC

この clock add 命令は第１引数として与えられた値(1970年１月１日00:00 協定世界時と言う特定の時点からの名目上の秒数で現す)に時間計算を遂行する｡残りの引数(但し -timezone, -locale , -gmt 追加指定を除いて)は､整数と用語が交互になっていて､その用語は､seconds, minutes, hours, days, weeks, months, years のどれか､若しくはその様な単語の混同の恐れのない接頭辞から選ばれる｡ 　　　 The clock add command performs clock arithmetic on a value (expressed as nominal seconds from the epoch time of 1 January 1970, 00:00 UTC) given as its first argument. The remaining arguments (other than the possible -timezone, -locale and -gmt options) are integers and keywords in alternation, where the keywords are chosen from seconds, minutes, hours, days, weeks, months, or years, or any unique prefix of such a word.

秒､分､時の加算は単純明快である; 与えられた増加分の時間(分は60倍し､時は3600倍して)は､単純に clock add 命令の timeVal に加算される｡その結果は特定の時刻からの秒で表現した数に換算される｡ 　　　 Addition of seconds, minutes and hours is fairly straightforward; the given time increment (times sixty for minutes, or 3600 for hours) is simply added to the timeVal given to the clock add command. The result is interpreted as a nominal number of seconds from the Epoch.

閏秒が挿入或は､削除された時点を挟んだ場合は驚くような結果になり得る; clock add 命令は単純に閏秒を無視し､時刻の到来は常に 23:59:58, 23:59:59, 00:00:00 になっていると仮定している｡この仮定は､Tcl の原型の時刻は Tcl の時刻が世界の協調に戻る迄､時計を極く少し速めたり遅らせたりして閏秒に反応する事実によって処理される｡ 　　　 Surprising results may be obtained when crossing a point at which a leap second is inserted or removed; the clock add command simply ignores leap seconds and therefore assumes that times come in sequence, 23:59:58, 23:59:59, 00:00:00. This assumption is handled by the fact that Tcl's model of time reacts to leap seconds by speeding or slowing the clock by a miniscule amount until Tcl's time is back in step with the world.

時間の加算と減算が絶対時刻基準で定められると謂う意味は､夏時間(夏時刻)に観察される､時差域に固定されている時間の量を加算することである｡譬えば､次の記述譜は x の値を 04:00:00 に設定するが､その理由は､問題になっている期間には時刻が変更されているためでである｡ 　　　 The fact that adding and subtracting hours is defined in terms of absolute time means that it will add fixed amounts of time in time zones that observe summer time (Daylight Saving Time). For example, the following code sets the value of x to 04:00:00 because the clock has changed in the interval in question.

    set s [clock scan {2004-10-30 05:00:00} \
               -format {%Y-%m-%d %H:%M:%S} \
               -timezone :America/New_York]
    set a [clock add $s 24 hours -timezone :America/New_York]
    set x [clock format $a \
               -format {%H:%M:%S} -timezone :America/New_York]

日にちと週の加算と減算は与えられた時間を適切な時差と地域情報を有する日の暦日と時刻に変換し遂行される｡必要な数の日数(週は７倍して変換される)が暦日に加算され､次に日にちと時間は､あの特定時刻からの秒数に再変換される｡ 　　　 Adding and subtracting days and weeks is accomplished by converting the given time to a calendar day and time of day in the appropriate time zone and locale. The requisite number of days (weeks are converted to days by multiplying by seven) is added to the calendar day, and the date and time are then converted back to a count of seconds from the epoch time.

与えられた日数の加算と減算が､夏時間(夏時刻)の始まりか終りの変更時刻を横断している場合は､結果的に問題になっている日の､同じ現地時間になる｡譬えば､次の記述譜は x の値を 05:00:00 に設定する｡ 　　　 Adding and subtracting a given number of days across the point that the time changes at the start or end of summer time (Daylight Saving Time) results in the same local time on the day in question. For instance, the following code sets the value of x to 05:00:00.

    set s [clock scan {2004-10-30 05:00:00} \
               -format {%Y-%m-%d %H:%M:%S} \
               -timezone :America/New_York]
    set a [clock add $s 1 day -timezone :America/New_York]
    set x [clock format $a \
               -format {%H:%M:%S} -timezone :America/New_York]

不明瞭な場合の処理､同じ現地時刻が一日に２度現れる場合は､早い方を使う｡変換結果が不可能な時刻になる場合(譬えば､米国規則を適用した春の夏時間移行中の 02:30 )は､時刻が変化しなかったかのように変換する｡譬えば､次の記述譜は x を 03:30:00 に設定する｡ 　　　 In cases of ambiguity, where the same local time happens twice on the same day, the earlier time is used. In cases where the conversion yields an impossible time (for instance, 02:30 during the Spring Daylight Saving Time change using US rules), the time is converted as if the clock had not changed. Thus, the following code will set the value of x to 03:30:00.

    set s [clock scan {2004-04-03 02:30:00} \
               -format {%Y-%m-%d %H:%M:%S} \
               -timezone :America/New_York]
    set a [clock add $s 1 day -timezone :America/New_York]
    set x [clock format $a \
               -format {%H:%M:%S} -timezone :America/New_York]

与えられた日にちや週の数の加算結果がユリウス暦とグレゴリオ暦を横断する場合も正しく働く; 欠落している日は飛越す｡次の記述譜は z を 1752-09-14 に設定する｡(註訳 英連邦のグレゴリオ暦導入日は1752年9月14日) 　　　 Adding a given number of days or weeks works correctly across the conversion between the Julian and Gregorian calendars; the omitted days are skipped. The following code sets z to 1752-09-14.

    set x [clock scan 1752-09-02 -format %Y-%m-%d -locale en_US]
    set y [clock add $x 1 day -locale en_US]
    set z [clock format $y -format %Y-%m-%d -locale en_US]

与えられた数の日数を加算した結果が､ユリウス暦とグレゴリオ暦の変換の谷間に落込み､実在しない日になる奇妙な結果の場合はユリウス暦を仮定して変換する｡ 　　　 In the bizarre case that adding the given number of days yields a date that does not exist because it falls within the dropped days of the Julian-to-Gregorian conversion, the date is converted as if it was on the Julian calendar.

月数､年数の加算も同様になる; 与えられた時点を暦の日とその時刻に変換する｡次に､要求された数の月や年を加算し､その後､絶対時刻に再変換する｡ 　　　 Adding a number of months, or a number of years, is similar; it converts the given time to a calendar date and time of day. It then adds the requisite number of months or years, and reconverts the resulting date and time of day to an absolute time.

月の日数が少な過ぎて計算ができない場合(譬えば､１月31に1月を加算する)､晦日(月の末日)が代わりになる｡従って､１月31に1月を加算すると平年では2月28日､閏年では2月29日になる｡ 　　　 If the resulting date is impossible because the month has too few days (for example, when adding 1 month to 31 January), the last day of the month is substituted. Thus, adding 1 month to 31 January will result in 28 February in a common year or 29 February in a leap year.

夏時間やグレゴリオ暦による異常な関係の取扱規則は､月と年の加算/減算の時は日にちや週の加算/減算 と同じに行う｡ 　　 The rules for handling anomalies relating to summer time and to the Gregorian calendar are the same when adding/subtracting months and years as they are when adding/subtracting days and weeks.

もし､多数の計数単位対が命令上にある場合､評価は連続して､左から右に行う｡ 　　　 If multiple count unit pairs are present on the command, they are evaluated consecutively, from left to right.

### HIGH RESOLUTION TIMERS

この clock 命令が対応している殆どの副命令はあの特定の時刻からの秒数として表現する時刻を扱い､そして､これこそが clock seconds が返す値の表現である｡但し､三つの例外があり､何れも､高精度の時刻の要求のためを意図している｡clock milliseconds は､あの特定の時刻からの千分の一秒刻みの数を返し､ clock microseconds は､あの特定の時刻からの百万分の一秒刻みの数を返す｡更に､clock clicks 命令も存在し､OS依存の高精度時刻を返す｡ clock clicks は clock seconds や clock milliseconds とは違って､何かの特定の時刻との関連を保障しているのではなく､単に利用しうる最も高精度の期間の時刻の利用を意図していて､速度評定の様な､相対的時間の調査のみを意図している｡ 　　　 Most of the subcommands supported by the clock command deal with times represented as a count of seconds from the epoch time, and this is the representation that clock seconds returns. There are three exceptions, which are all intended for use where higher-resolution times are required. clock milliseconds returns the count of milliseconds from the epoch time, and clock microseconds returns the count of microseconds from the epoch time. In addition, there is a clock clicks command that returns a platform-dependent high-resolution timer. Unlike clock seconds and clock milliseconds, the value of clock clicks is not guaranteed to be tied to any fixed epoch; it is simply intended to be the most precise interval timer available, and is intended only for relative timing studies such as benchmarks.

### FORMATTING TIMES

この clock format 命令は､使用者への表示や､外部媒体への描き出しの為の時刻を生成する｡この命令は､clock seconds か clock scan か clock add か file atime か file mtime から戻されてくる､1970年１月１日00:00 協定世界時という特定の日時を基準にして秒数で表している時刻を受取る｡ 　　 The clock format command produces times for display to a user or writing to an external medium. The command accepts times that are expressed in seconds from the epoch time of 1 January 1970, 00:00 UTC, as returned by clock seconds, clock scan, clock add, file atime or file mtime.

もし､ -format 指定が与えられていると､それに続く引数は文字列であって､如何に日にちや時刻を書式するかを規定する｡その文字列は､百分率記号 (“%”) 以外の任意の個数の文字に､百分率で始まる二文字の書式群 format groupsを任意の個数点在させて構成される｡許容される書式群と､その配置は FORMAT GROUPS の処で記述する｡ 　　　 If a -format option is present, the following argument is a string that specifies how the date and time are to be formatted. The string consists of any number of characters other than the per-cent sign (“%”) interspersed with any number of format groups, which are two-character sequences beginning with the per-cent sign. The permissible format groups, and their interpretation, are described under FORMAT GROUPS.

もし､-timezone 指定が与えられると､続く引数は､そこで日にちや時刻を書式化する時差領域を指定する文字列である｡古い “-gmt true” に代わって､ “-timezone :UTC” が使われるかもしれない｡許容される時差領域の変形体については TIME ZONES を参照されたい｡ 　　 If a -timezone option is present, the following argument is a string that specifies the time zone in which the date and time are to be formatted. As an alternative to “-timezone :UTC”, the obsolete usage “-gmt true” may be used. See TIME ZONES for the permissible variants for the time zone.

もし､ -locale 指定が与えられると､続く引数は､そこで時刻を書式化すべき地域情報を指定する文字列である､その書式は msgcat 梱包の為に使用される書式と同じである｡註意すべきは､ -locale が指示されない､省略時設定は､現在の地域情報ではなく､原点の地域情報 {} であることである｡現在の地域情報は -locale current を使っても得られる｡更に､ある種のOSでは､使用者の現在の選択を反映した system 地域情報に対応している｡譬えば､Windows では､使用者がコントロールパネルから選択した日付と時刻は､ system 地域情報を使って得られる｡LC_TIMEとは別に使用者が選択した時刻と日にちを定義していないOSでは､ -locale system は -locale current と類義である｡ 　 　 If a -locale option is present, the following argument is a string that specifies the locale in which the time is to be formatted, in the same format that is used for the msgcat package. Note that the default, if -locale is not specified, is the root locale {} rather than the current locale. The current locale may be obtained by using -locale current. In addition, some platforms support a system locale that reflects the user's current choices. For instance, on Windows, the format that the user has selected from dates and times in the Control Panel can be obtained by using the system locale. On platforms that do not define a user selection of date and time formats separate from LC_TIME, -locale system is synonymous with -locale current.

### 時刻の内部表現変換　SCANNING TIMES

この clock scan 命令は､文字列として書式化された時刻を受取り､それを変換して､あの1970年１月１日00:00 協定世界時と言う特定の時点からの秒の数値に変換する｡通常は -format 指定を取り､それに続く文字列が入力の望ましい書式を記述する｡(そのような引数がない clock scan の効果については､FREE FORM SCAN を参照のこと)｡その文字列は､百分率記号 (“%”) 以外の幾つかの個数の文字に､百分率で始まる二文字の書式群 format groups を幾つか点在させで構成される｡許容される書式群と､その配置は FORMAT GROUPS の基で記述する｡ 　 　　 The clock scan command accepts times that are formatted as strings and converts them to counts of seconds from the epoch time of 1 January 1970, 00:00 UTC. It normally takes a -format option that is followed by a string describing the expected format of the input. (See FREE FORM SCAN for the effect of clock scan without such an argument.) The string consists of any number of characters other than the per-cent sign (“%”), interspersed with any number of format groups, which are two-character sequences beginning with the per-cent sign. The permissible format groups, and their interpretation, are described under FORMAT GROUPS.

もし､ -timezone 指定が与えられると､続く引数は､そこで日にちや時刻を書式化する時差領域を指定する文字列である｡古い -gmt true に代わって､ -timezone :UTC が使われるかもしれない｡許容される時差領域の変形体については TIME ZONES を参照されたい｡(訳註 米国人の英国流への劣等感が透けて見える) 　　 If a -timezone option is present, the following argument is a string that specifies the time zone in which the date and time are to be interpreted. As an alternative to -timezone :UTC, the obsolete usage -gmt true may be used. See TIME ZONES for the permissible variants for the time zone.

もし､ -locale 指定が与えられると､続く引数は､そこで時刻を書式化すべき地域情報を指定する文字列である､その書式は msgcat 梱包の為に使用される書式と同じである｡註意すべきは､ -locale が指示されない､省略時設定は､現在の地域情報ではなく､原点の地域情報 {} であることである｡現在の地域情報は -locale current を使っても得られる｡更に､ある種のOSでは､使用者の現在の選択を反映した system 地域情報に対応している｡譬えば､Windows では､使用者がコントロールパネルから選択した日付と時刻は､ system 地域情報を使って得られる｡LC_TIME とは別に使用者が選択した時刻と日にちを定義していないOSでは､ -locale system は -locale current と類義である｡ 　　　 If a -locale option is present, the following argument is a string that specifies the locale in which the time is to be interpreted, in the same format that is used for the msgcat package. Note that the default, if -locale is not specified, is the root locale {} rather than the current locale. The current locale may be obtained by using -locale current. In addition, some platforms support a system locale that reflects the user's current choices. For instance, on Windows, the format that the user has selected from dates and times in the Control Panel can be obtained by using the system locale. On platforms that do not define a user selection of date and time formats separate from LC_TIME, -locale system is synonymous with -locale current.

もし､ -base 指定が与えられると､続く引数は､相対時を解釈する為に使われる base time と言う時刻である｡ -base 指定が与えられないと､基準の時刻は現在時刻である｡ 　　 If a -base option is present, the following argument is a time (expressed in seconds from the epoch time) that is used as a base time for interpreting relative times. If no -base option is present, the base time is the current time.

定まった書式での時刻の調査は､三つの項目を定めることで進行する: 日付､時刻､時差領域である｡この三つは､まとめて時刻に集約され､彼の特定の時刻からの秒数の数値となって戻ってくる｡ 　　　 Scanning of times in fixed format works by determining three things: the date, the time of day, and the time zone. These three are then combined into a point in time, which is returned as the number of seconds from the epoch.

変換を始める前に､この書式の文字列の､ %c, %Ec, %x, %Ex, %X, %Ex, %r, %R, %T, %D, %EY , %+ 書式 は､現在の地域情報と上述の書式群に含まれない､適切な対応値に置換えられる｡譬えば､%D (en_US の地域情報で)は､ %m/%d/%Y で置換えられる｡ 　　 Before scanning begins, the format string is preprocessed to replace %c, %Ec, %x, %Ex, %X. %Ex, %r, %R, %T, %D, %EY and %+ format groups with counterparts that are appropriate to the current locale and contain none of the above groups. For instance, %D will (in the en_US locale) be replaced with %m/%d/%Y.

日付は書式文字列に前置された欄枠に沿って決定される｡優先順位は次の通り: 　 　 The date is determined according to the fields that are present in the preprocessed format string. In order of preference:

1. もし､文字列に､彼の特定時刻からの秒数を表している %s の書式群があると､日付の決定にその書式群が使用される｡ 　 If the string contains a %s format group, representing seconds from the epoch, that group is used to determine the date.

2. もし､文字列に､ユリウス暦日付番号を表している %J の書式群があると､日付の決定にその書式群が使用される｡ 　　 If the string contains a %J format group, representing the Julian Day Number, that group is used to determine the date.

3. 文字列に､世紀､年､月､日; 又は､世紀､年､年内の日数; 又は､ISO8601 暦年､年内の週番号､曜日 を規定する日数；を指定する書式群が完全に揃っている場合､これらの群が組合され､日付の決定に使用される｡完全な組合せが一つ以上あると､完全なものの内の右側にある方が使用される｡ 　　 If the string contains a complete set of format groups specifying century, year, month, and day of month; century, year, and day of year; or ISO8601 fiscal year, week of year, and day of week; those groups are combined and used to determine the date. If more than one complete set is present, the one at the rightmost position in the string is used.

4. 文字列に､世紀を欠いていても､世紀中の年､月､日; 又は､世紀中の年､年内の日付け番号; 又は､ISO8601 の２桁の暦年､年内の週番号､曜日；を規定する書式群が揃っている場合､それらが組合されて､日付の決定に使用される｡完全な組合せが一つ以上あると､完全なものの内の右側にある方が使用される｡西暦年は1938 年以降から 2037 以前迄と看做される｡ 　　 　 If the string lacks a century but contains a set of format groups specifying year of century, month and day of month; year of century and day of year; or two-digit ISO8601 fiscal year, week of year, and day of week; those groups are combined and used to determine the date. If more than one complete set is present, the one at the rightmost position in the string is used. The year is presumed to lie in the range 1938 to 2037 inclusive.

5. 文字列には､西暦年を定める指定のどれかが全く欠けているが(又は､地方化された代理暦の年のみを含んでいる)､ 月と月内の日にち､又は､年内の日数番号､又は､年内の週番号と曜日､を指定する書式化群の組を含む場合､それらが組合されて､日付の決定に使用される｡完全な組合せが一つ以上あると､完全なものの内の右側にある方が使用される｡西暦年は与えられた､時差域中の基本時間を解釈して決定される｡ 　 If the string entirely lacks any specification for the year (or contains the year only on the locale's alternative calendar) and contains a set of format groups specifying month and day of month, day of year, or week of year and day of week, those groups are combined and used to determine the date. If more than one complete set is present, the one at the rightmost position in the string is used. The year is determined by interpreting the base time in the given time zone.

6. 文字列は､上述の組合せの何れをも含んでいないが､月中の日にちか曜日､を含んでいると､月中の日にちか曜日は､与えられた時差域の中の基本時間と､戻ってきた､現在の週又は月の日との､解釈によって､日付の決定に使用される｡(週はISO8601 方法により月曜から日曜に向く)｡月中の日にちと週中の曜日が与えれれると月中の日にちが優先される｡ 　　 If the string contains none of the above sets, but has a day of the month or day of the week, the day of the month or day of the week are used to determine the date by interpreting the base time in the given time zone and returning the given day of the current week or month. (The week runs from Monday to Sunday, ISO8601-fashion.) If both day of month and day of week are present, the day of the month takes priority.

7. 上述の日付の規則が使えないと､与えられた時差域の基本時間の日付が使われる｡ 　　 If none of the above rules results in a usable date, the date of the base time in the given time zone is used.

時刻は､書式文字列に前置された欄枠に沿って決定される｡優先順位は次の通り: 　 　 The time is also determined according to the fields that are present in the preprocessed format string. In order of preference:

1. もし､文字列に､彼の特定時刻からの秒数を表している %s の書式群があると､日付の決定にその書式群が使用される｡ 　 If the string contains a %s format group, representing seconds from the epoch, that group determines the time of day.

2. 文字列に､24時間中の時刻であるか､若しくは､12時間中の時刻に加え､午前/午后 の識別表示 であるか､があるとその日の時刻が決定される｡もし､文字列が､更に､時間中の分を規定する書式群を含むと､時間の書式群に組合す｡もし､文字列が､更に､分中の秒を規定する書式群を含むと､時間と分の書式群に組合す｡ 　　 If the string contains either an hour on the 24-hour clock or an hour on the 12-hour clock plus an AM/PM indicator, that hour determines the hour of the day. If the string further contains a group specifying the minute of the hour, that group combines with the hour. If the string further contains a group specifying the second of the minute, that group combines with the hour and minute.

3. もし文字列が %s も､日中の時間を規定する書式群も､含まない場合､夜半時が使用される(00:00 与えられた日の開始)｡時差域は -timezone 又は -gmt 指定か､現在の時差域から決定する｡ 　　　　　 If the string contains neither a %s format group nor a group specifying the hour of the day, then midnight (00:00, the start of the given date) is used. The time zone is determined by either the -timezone or -gmt options, or by using the current time zone.

もし%z と %Z 書式群が欠落していると､時刻の曖昧さが起る可能性がある､同じ時刻が同じ日に二度起りうる､夏時間補正ありとなしである｡こうなると､先に到達した方を採用する｡(この為､現地時間を変換するときは､入力文字列に時差域を含ませることが好ましい｡この警告は､協定世界時には適用しない)｡ 　　　 If a format string lacks a %z or %Z format group, it is possible for the time to be ambiguous because it appears twice in the same day, once without and once with Daylight Saving Time. If this situation occurs, the first occurrence of the time is chosen. (For this reason, it is wise to have the input string contain the time zone when converting local times. This caveat does not apply to UTC times.)

もし群の解釈が､範囲から外れて実現できない時刻を生成すると､その範囲に入るように､時刻に充分な単位分だけ加算又は減算される｡従って､月の零日を数値化または文字列化しようとする試みは､月の朔日から一日を減じ､前の月の晦日を生成する｡　　　　　　　 If the interpretation of the groups yields an impossible time because a field is out of range, enough of that field's unit will be added to or subtracted from the time to bring it in range. Thus, if attempting to scan or format day 0 of the month, one day will be subtracted from day 1 of the month, yielding the last day of the previous month.

もし､群の解釈が､夏時間移行で飛越して不可能になる時刻を生成するとか､夏時間が終了し､時計が同じ時刻を２回示すが､書式に夏か冬の時期指定(%z や %Z)がなく不明瞭な時刻を生成する場合､時刻は時間が変更されなかったかのように解釈される｡ 　　　　　　　　　 If the interpretation of the groups yields an impossible time because a Daylight Saving Time change skips over that time, or an ambiguous time because a Daylight Saving Time change skips back so that the clock observes the given time twice, and no time zone specifier (%z or %Z) is present in the format, the time is interpreted as if the clock had not changed.

### FORMAT GROUPS

次の書式群が clock scan と clock format 命令により認識される｡ 　　 The following format groups are recognized by the clock scan and clock format commands.

%a
  出力では､与えられた地域情報の曜日の短縮形(例, Mon)を生成する｡入力では､与えられた地域情報の曜日(短縮形でも､全綴りでも､混同なく識別できるどの様な接頭辞の形式でも)に合致する｡ 　　　 On output, produces an abbreviation (e.g., Mon) for the day of the week in the given locale. On input, matches the name of the day of the week in the given locale (in either abbreviated or full form, or any unique prefix of either form).

%A
  出力では､与えられた地域情報の曜日の全綴り(例, Monday)を生成する｡入力では､与えられた地域情報の曜日(短縮形でも､全綴りでも､混同なく識別できるどの様な接頭辞の形式でも)に合致する｡ 　　 On output, produces the full name (e.g., Monday) of the day of the week in the given locale. On input, matches the name of the day of the week in the given locale (in either abbreviated or full form, or any unique prefix of either form).

%b
  出力では､与えられた地域情報の月名の短縮形(例, Jan)を生成する｡入力では､与えられた地域情報の月名(短縮形でも､全綴りでも､混同なく識別できるどの様な接頭辞の形式でも)に合致する｡ 　　 On output, produces an abbreviation (e.g., Jan) for the name of the month in the given locale. On input, matches the name of the month in the given locale (in either abbreviated or full form, or any unique prefix of either form).

%B
  出力では､与えられた地域情報の月名の全綴り(例, January)を生成する｡入力では､与えられた地域情報の月名(短縮形でも､全綴りでも､混同なく識別できるどの様な接頭辞の形式でも)に合致する｡ On output, produces the full name (e.g., January) of the month in the given locale. On input, matches the name of the month in the given locale (in either abbreviated or full form, or any unique prefix of either form).

%c
  出力では､日付と時刻の地方時での表現を生成する; 地方時の表現はグレゴリオ暦の使用が期待される｡入力では､ %c が生成した形になら合致する｡ 　　　 On output, produces a localized representation of date and time of day; the localized representation is expected to use the Gregorian calendar. On input, matches whatever %c produces.

%C
  出力では､アラビア数字で世紀を生成する｡入力では､先行する空白があっても好く､一つ又は二つの数字に合致し､世紀の数であることが期待される｡ 　　　 On output, produces the number of the century in Indo-Arabic numerals. On input, matches one or two digits, possibly with leading whitespace, that are expected to be the number of the century.

%d
  出力では､月中の日にちを二桁の数字を生成する｡入力では､先行する空白があっても良く､一つ又は二つの数字に合致し､月の中の日にちの数であることが期待される｡ 　　　 On output, produces the number of the day of the month, as two decimal digits. On input, matches one or two digits, possibly with leading whitespace, that are expected to be the number of the day of the month.

%D
  この書式群は %m/%d/%Y の類義語である｡ en_US 方言内での日付の交換のみに使用する､理由は､他の方言では月､日､年の順は使わないので｡ 　　 This format group is synonymous with %m/%d/%Y. It should be used only in exchanging data within the en_US locale, since other locales typically do not use this order for the fields of the date.

%e
  出力では､月中の日にちを表す､一つ又は二つの数字を生成する(数字一文字には空白が先行する)｡入力では､先行する空白があっても良く､一つ又は二つの数字に合致し､月の中の日にちの数であることが期待される｡ 　　 On output, produces the number of the day of the month, as one or two decimal digits (with a leading blank for one-digit dates). On input, matches one or two digits, possibly with leading whitespace, that are expected to be the number of the day of the month.

%Ec
  出力では､地域情報依存の表現で､地域情報の別の暦の日にちと時刻を生成する｡入力では､なんであれ%Ec と合致する｡地域情報の別の暦はグレゴリオ暦でなくてもよい｡ 　　 On output, produces a locale-dependent representation of the date and time of day in the locale's alternative calendar. On input, matches whatever %Ec produces. The locale's alternative calendar need not be the Gregorian calendar.

%EC
  出力では､地域情報依存の表現で､地域情報の別の暦の世紀を生成する｡入力では､世紀の名前又は混同の恐れのない接頭辞と合致する｡ 　　 On output, produces a locale-dependent name of an era in the locale's alternative calendar. On input, matches the name of the era or any unique prefix.

%EE
  出力では､ %Y が西暦１年の前か後のどちらを参照するかを指し示す為の文字列 B.C.E. か C.E. か地域情報内でそれと同じ意味の文字列を生成する｡入力では､文字列 B.C.E., B.C., C.E., A.D. 又は現在の地域情報に適した短縮形及び %Y が西暦１年の前か後のどちらを参照するかを定めるために使う文字列､を受入れる｡ 　　　 On output, produces the string B.C.E. or C.E., or a string of the same meaning in the locale, to indicate whether %Y refers to years before or after Year 1 of the Common Era. On input, accepts the string B.C.E., B.C., C.E., A.D., or the abbreviation appropriate to the current locale, and uses it to fix whether %Y refers to years before or after Year 1 of the Common Era.

%Ex
  出力では､地域情報依存の表現で､地域情報の別の暦の日にちを生成する｡入力では､なんであれ %Ex と合致する｡地域情報の別の暦はグレゴリオ暦でなくてもよい｡ On output, produces a locale-dependent representation of the date in the locale's alternative calendar. On input, matches whatever %Ex produces. The locale's alternative calendar need not be the Gregorian calendar.

%EX
  出力では､地域情報依存の表現で､地域情報の別の暦の一日のなかの時刻を生成する｡入力では､なんであれ %EX と合致する｡　　 On output, produces a locale-dependent representation of the time of day in the locale's alternative numerals. On input, matches whatever %EX produces.

%Ey
  出力では､地域情報依存の表現で､地域情報の別の暦と年度内での世紀の中の年数を生成する｡入力では､その様な数に合致する｡ 　　 On output, produces a locale-dependent number of the year of the era in the locale's alternative calendar and numerals. On input, matches such a number.

%EY
  出力では､地域情報依存の表現で､地域情報の別の暦と年度内での年数を生成する｡入力では､%EY の出力と合致する｡しばしば %EC%Ey の類義語になる｡ On output, produces a representation of the year in the locale's alternative calendar and numerals. On input, matches what %EY produces. Often synonymous with %EC%Ey.

%g
  出力では､ ISO8601 暦の週基準と一緒に使うに適する様な､２桁の西暦年数を生成する; それは､ %V により生成された週番号と組合せになる年番号である｡入力では､この様な先行する空白があるかも知れない２桁の数字を受取る｡ 　　 On output, produces a two-digit year number suitable for use with the week-based ISO8601 calendar; that is, the year number corresponds to the week number produced by %V. On input, accepts such a two-digit year number, possibly with leading whitespace.

%G
  出力では､ ISO8601 暦の週基準と一緒に使うに適する様な､４桁の西暦年数を生成する; それは､ %V により生成された週番号と組合せになる年番号である｡入力では､この様な先行する空白があるかも知れない４桁の数字を受取る｡ 　　 On output, produces a four-digit year number suitable for use with the week-based ISO8601 calendar; that is, the year number corresponds to the week number produced by %V. On input, accepts such a four-digit year number, possibly with leading whitespace.

%h
  この書式群は %b と類義語である｡ 　　 This format group is synonymous with %b.

%H
  出力では､一日の中の時刻(00-23)を24時間制で表す､二つの数字を生成する｡入力では､そのような数を受入れる｡ 　　　 On output, produces a two-digit number giving the hour of the day (00-23) on a 24-hour clock. On input, accepts such a number.

%I
  出力では､一日の中の時刻(01-12)を12時間制で表す､二つの数字を生成する｡入力では､そのような数を受入れる｡ 　　　 On output, produces a two-digit number giving the hour of the day (12-11) on a 12-hour clock. On input, accepts such a number.

%j
  出力では､一年の中の日にち番号(001-366)を表す､三つの数字を生成する｡入力では､そのような数を受入れる｡ 　　　 On output, produces a three-digit number giving the day of the year (001-366). On input, accepts such a number.

%J
  出力では､ユリウス暦の日付番号を意味する数字列を生成する｡入力では､数字列を受入れ､ユリウス暦の日付番号に解釈する｡このユリウス暦日付番号は､遡及ユリウス暦の紀元前4713年１月１日から経過した暦日の数である｡彼の特別な1970年１月１日は､ユリウス暦日付番号 2440588 に相当する｡ 　　　 On output, produces a string of digits giving the Julian Day Number. On input, accepts a string of digits and interprets it as a Julian Day Number. The Julian Day Number is a count of the number of calendar days that have elapsed since 1 January, 4713 BCE of the proleptic Julian calendar. The epoch time of 1 January 1970 corresponds to Julian Day Number 2440588.

%k
  出力では､一日の中の時刻(0-23)を24時間制で表す､一つ又は二つの数字を生成する｡入力では､そのような数を受入れる｡ 　　　 On output, produces a one- or two-digit number giving the hour of the day (0-23) on a 24-hour clock. On input, accepts such a number.

%l
  出力では､一日の中の時刻(1-12)を12時間制で表す､一つ又は二つの数字を生成する｡入力では､そのような数を受入れる｡ 　　　 On output, produces a one- or two-digit number giving the hour of the day (12-11) on a 12-hour clock. On input, accepts such a number.

%m
  出力では､月の番号(01-12)を表す､二つの数字を生成する｡入力では､二つの数字を受け入れ､月番号と解釈する｡ 　　　 On output, produces the number of the month (01-12) with exactly two digits. On input, accepts two digits and interprets them as the number of the month.

%M
  出力では､時間中の分(00-59)を表す､二つの数字を生成する｡入力では､二つの数字を受け入れ､時間中の分と解釈する｡　　　 On output, produces the number of the minute of the hour (00-59) with exactly two digits. On input, accepts two digits and interprets them as the number of the minute of the hour.

%N
  出力では､月の番号(1-12)を表す､一つ又は二つの数字を生成する､数字一文字には空白が先行する｡入力では､先行する空白があっても良く､一つ又は二つの数字を受け入れ､月番号と解釈する｡ 　　　 On output, produces the number of the month (1-12) with one or two digits, and a leading blank for one-digit dates. On input, accepts one or two digits, possibly with leading whitespace, and interprets them as the number of the month.

%Od, %Oe, %OH, %OI, %Ok, %Ol, %Om, %OM, %OS, %Ou, %Ow, %Oy
  この書式群全ては､地域情報-依存の代理数の下で生成､調査すること以外は､ “O” を除いた対応する類義語に類似する｡ All of these format groups are synonymous with their counterparts without the “O”, except that the string is produced and parsed in the locale-dependent alternative numerals.

%p
  出力では､与えられた地域情報に相応しい､一日の前後半の､AM か PM を生成する｡地域情報を与えた記述譜が､多様な文字形式に対応できるなら､小文字が望ましい｡入力では､与えられた地域情報での AM か PM の表現に､大文字でも小文字でも一致する｡ 　　 On output, produces an indicator for the part of the day, AM or PM, appropriate to the given locale. If the script of the given locale supports multiple letterforms, lowercase is preferred. On input, matches the representation AM or PM in the given locale, in either case.

%P
  出力では､与えられた地域情報に相応しい､一日の前後半の､am か pm を生成する｡地域情報を与えた記述譜が､多様な文字形式に対応できるなら､大文字が望ましい｡入力では､与えられた地域情報での AM か PM の表現に､大文字でも小文字でも一致する｡ 　　 On output, produces an indicator for the part of the day, am or pm, appropriate to the given locale. If the script of the given locale supports multiple letterforms, uppercase is preferred. On input, matches the representation AM or PM in the given locale, in either case.

%Q
  この書式群は将来にTcl外部函数群の中で使用する為に予約されている｡ 　　　 This format group is reserved for internal use within the Tcl library.

%r
  出力では､地域情報依存の一日の時刻を12時間時計上で表現する｡入力では何であれ､ %r の出力を受入れる｡ 　　 On output, produces a locale-dependent time of day representation on a 12-hour clock. On input, accepts whatever %r produces.

%R
  出力では､24時間制の時間表記(%H:%M)｡秒を含む版については下の %T を参照されたい｡入力では何であれ､%R の出力を受入れる｡ 　　　 On output, the time in 24-hour notation (%H:%M). For a version including the seconds, see %T below. On input, accepts whatever %R produces.

%s
  出力では､ timeVal 引数を単に十進整数に書式化し､出力文字列に挿入する｡入力では､十進整数を受入れ､それ以上の処理なしで､時刻の値として使用する｡理由は､ %s は､その他のあらゆる入力書式を上書きし､時刻を唯一に定めるので｡ 　　　 On output, simply formats the timeVal argument as a decimal integer and inserts it into the output string. On input, accepts a decimal integer and uses is as the time value without any further processing. Since %s uniquely determines a point in time, it overrides all other input formats.

%S
  出力では､分の秒数の二桁の十進数 (00-59)を生成する｡入力では二桁の十進数を受取り分の秒として使用される｡ 　　　 On output, produces a two-digit number of the second of the minute (00-59). On input, accepts two digits and uses them as the second of the minute.

%t
  出力では \t を生成する｡入力は \t に一致する｡ On output, produces a TAB character. On input, matches a TAB character.

%T
  %H:%M:%S と類義語｡ 　　　 Synonymous with %H:%M:%S.

%u
  出力では､曜日の番号(月曜==1; 日曜==7)を生成する｡入力では､一つの数字を受取り曜日と解釈する｡ 日曜は 0 でも､7 でも好い｡ 　　 On output, produces the number of the day of the week (1→Monday, 7→Sunday). On input, accepts a single digit and interprets it as the day of the week. Sunday may be either 0 or 7.

%U
  出力では､1年の中の週の番号(00-53)を生成する｡１年の第１日曜日が01週の最初の日である｡入力では､二つの数字を受入れ､それ以外は無視する｡この書式群は入力日付に使われることはない｡この方式の週番号は過っては米国銀行と共通であったが､現在は全くの旧式になった｡ISO8601 式週番号については %V を参照されたい｡ 　　　 On output, produces the ordinal number of the week of the year (00-53). The first Sunday of the year is the first day of week 01. On input accepts two digits which are otherwise ignored. This format group is never used in determining an input date. This interpretation of the week of the year was once common in US banking but is now largely obsolete. See %V for the ISO8601 week number.

%V
  出力では､ISO8601 式の､1年の中の週の番号(01-53)を生成する､週01は１月４日を含む週である; 又は､４日以上の日にちを含む年の第一週である; 又は､１年の最初の木曜日を含む週である(３つの記述は等価である)｡それぞれの週は月曜に始まる｡入力では､ISO8601 式週番号を受入れる｡ 　　　 On output, produces the number of the ISO8601 week as a two digit number (01-53). Week 01 is the week containing January 4; or the first week of the year containing at least 4 days; or the week containing the first Thursday of the year (the three statements are equivalent). Each week begins on a Monday. On input, accepts the ISO8601 week number.

%w
  出力では､曜日の番号(日曜==0; 土曜==6)を生成する｡入力では､一つの数字を受取り曜日と解釈する; 日曜は0又は､7を表す;注意すべきは %w は､ %u で生成され､受入れられるISO8601 式週番号とは異なる｡ 　　　 On output, produces the ordinal number of the day of the week (Sunday==0; Saturday==6). On input, accepts a single digit and interprets it as the day of the week; Sunday may be represented as either 0 or 7. Note that %w is not the ISO8601 weekday number, which is produced and accepted by %u.

%W
  出力では､1年の中の週の番号(00-53)を生成する､週01は年の第一月に始まる｡入力では､二つの数字を受け入れ､それ以外は無視される｡この書式群は､入力の日付の決定に使われることはない｡この書式は､ %V で生成され､受入れられるISO8601 式週番号とは異なる｡ 　　 On output, produces a week number (00-53) within the year; week 01 begins on the first Monday of the year. On input, accepts two digits, which are otherwise ignored. This format group is never used in determining an input date. It is not the ISO8601 week number; that week is produced and accepted by %V.

%x
  出力では､地域情報依存の日付を表現する｡入力では何であれ､ %x による出力を受入れ､暦日の決定に使用される｡ On output, produces the date in a locale-dependent representation. On input, accepts whatever %x produces and is used to determine calendar date.

%X
  出力では､地域情報依存の日付を表現する｡入力では何であれ､ %X の出力を受入れ受入れ､暦日の決定に使用される｡ 　　　 On output, produces the time of day in a locale-dependent representation. On input, accepts whatever %X produces and is used to determine time of day.

%y
  出力では､世紀の中の西暦年の二つの数字を生成する｡入力では､二つの数字を受入れ､暦年の決定に使う｡日付は1938年以降､2037年以前であると看做す｡註意すべきは､%y は､ISO8601 式の %V 週番号と組合せて年を得るには不適切であり､この目的には %g の方を使用すべきである｡ 　　　 On output, produces the two-digit year of the century. On input, accepts two digits, and is used to determine calendar date. The date is presumed to lie between 1938 and 2037 inclusive. Note that %y does not yield a year appropriate for use with the ISO8601 week number %V; programs should use %g for that purpose.

%Y
  出力では､四つの数字の西暦年を生成する｡入力では､四つの数字を受入れ､西暦年の決定に使う｡註意すべきは､%Y は､ISO8601 式の %V 週番号と組合せて年を得るには不適切であり､この目的には %G の方を使用すべきである｡ 　　　 On output, produces the four-digit calendar year. On input, accepts four digits and may be used to determine calendar date. Note that %Y does not yield a year appropriate for use with the ISO8601 week number %V; programs should use %G for that purpose.

%z
  出力では､現在の時差域を生成する､時間と分をグリニッジの東(+hhmm)､又は西(-hhmm)で表現する｡入力では､時差域規定子(次の TIME ZONES 参照)を時差域の指定に使用する｡ On output, produces the current time zone, expressed in hours and minutes east (+hhmm) or west (-hhmm) of Greenwich. On input, accepts a time zone specifier (see TIME ZONES below) that will be used to determine the time zone.

%Z
  出力では､現在の時差域の名称を生成し､地域情報を意味する様に翻訳されることもある｡入力では､時差域の指定に使用する､時差域規定子(次の TIME ZONES 参照)を受入れる｡この指定は､一般には､ RFC822 の日付の調査のみに使用すべきである｡その他に使用すると多くの曖昧さがある; 譬えば､ BST は英国夏時間かも知れず､ブラジル標準時間かもしれない｡計算機用には 日付/時刻 文字列を使う代りに数値の時差域を使用することを勧める｡ 　　　 On output, produces the current time zone's name, possibly translated to the given locale. On input, accepts a time zone specifier (see TIME ZONES below) that will be used to determine the time zone. This option should, in general, be used on input only when parsing RFC822 dates. Other uses are fraught with ambiguity; for instance, the string BST may represent British Summer Time or Brazilian Standard Time. It is recommended that date/time strings for use by computers use numeric time zones instead.

%%
  出力では文字 “%” を生成する｡入力は文字 “%” に一致する｡ 　　　 On output, produces a literal “%” character. On input, matches a literal “%” character.

%+
  “%a %b %e %H:%M:%S %Z %Y” と類義語 Synonymous with “%a %b %e %H:%M:%S %Z %Y”.

### TIME ZONES

clock 命令が現地時間を処理するとき､使用する時差域には数種類の可能な資源がある｡優先順位は次の通り: 　　　 When the clock command is processing a local time, it has several possible sources for the time zone to use. In order of preference, they are:

1. 渡された文字列の中に存在する時差域の指定であって､%z か %Z 書式群に合致するもの｡ 　　 A time zone specified inside a string being parsed and matched by a %z or %Z format group.

2. この clock 命令に対して､-timezone 指定を伴って指定された､時差域(又は､ -gmt 1 と等価)｡ 　　　 A time zone specified with the -timezone option to the clock command (or, equivalently, by -gmt 1).

3. 環境変数 TCL_TZ 中で指定された時差域｡ 　　　 A time zone specified in an environment variable TCL_TZ.

4. 環境変数 TZ 中で指定された時差域｡ A time zone specified in an environment variable TZ.

5. Windowsシステムのコントロール・パネルからの地方時域｡ 　　　 The local time zone from the Control Panel on Windows systems.

6. mktime と localtime 函数により定義された､ C 言語外部函数の地方時間域｡ 　　　 The C library's idea of the local time zone, as defined by the mktime and localtime functions.

上述の [1] の場合のみ､文字列が次の文字列のどれかであるかを吟味する: 　　　 In case [1] only, the string is tested to see if it is one of the strings:

    gmt     ut      utc     bst     wet     wat     at
     nft     nst     ndt     ast     adt     est     edt
     cst     cdt     mst     mdt     pst     pdt     yst
     ydt     hst     hdt     cat     ahst    nt      idlw
     cet     cest    met     mewt    mest    swt     sst
     eet     eest    bt      it      zp4     zp5     ist
     zp6     wast    wadt    jt      cct     jst     cast
     cadt    east    eadt    gst     nzt     nzst    nzdt
     idle

もし文字列が上のリストにあると､既知の時差領域を指定し､そのように解釈される｡ 　　　 If it is a string in the above list, it designates a known time zone, and is interpreted as such.

[1]の時差領域について､上の文字列に合致せず､[2]-[6]の場合はつぎの規則が適用される｡ 　　　 For time zones in case [1] that do not match any of the above strings, and always for cases [2]-[6], the following rules apply.

時差域がコロンで始まっている場合､それは､:America/New_York の如く､様々な場所の為の規則を与える標準化された､名前のリストの一つである｡この場所の完全なリストは､ここにまとめるには長すぎる｡殆どの Tcl 実装では､場所の定義は “/no_backup/tools/lib/tcl8.5/clock/tzdata” の名前のディレクトリーに入っている｡幾つかのUnxシステムでは､このようなファイルは省略され､代りに､ “/usr/share/zoneinfo” か “/usr/share/lib/zoneinfo” か “/usr/local/etc/zoneinfo” 中のシステムファイルから､定義が得られる｡特別な場合として､ :localtime の名称が C 言語外部函数の定義として地方時間域を参照している｡ 　　　 If the time zone begins with a colon, it is one of a standardized list of names like :America/New_York that give the rules for various locales. A complete list of the location names is too lengthy to be listed here. On most Tcl installations, the definitions of the locations are to be found in named files in the directory “/no_backup/tools/lib/tcl8.5/clock/tzdata”. On some Unix systems, these files are omitted, and the definitions are instead obtained from system files in “/usr/share/zoneinfo”, “/usr/share/lib/zoneinfo” or “/usr/local/etc/zoneinfo”. As a special case, the name :localtime refers to the local time zone as defined by the C library.

時差域文字列は正又は負の符号に四つ乃至六つの十進数が添えられていて､時間の補正として解釈され､協定世界時からの分と秒(もし六つの数字がる時)補正値である｡正と負の符号は､正はグリニッジの東を表し; 負はグリニッジの西を表す｡ 　　　 A time zone string consisting of a plus or minus sign followed by four or six decimal digits is interpreted as an offset in hours, minutes, and seconds (if six digits are present) from UTC. The plus sign denotes a sign east of Greenwich; the minus sign one west of Greenwich.

環境変数 TZ の Posix 規定に構成設定する時差域文字列も認識しうる｡その規定は､次の番地にある https://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html ｡ 　　　 A time zone string conforming to the Posix specification of the TZ environment variable will be recognized. The specification may be found at https://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html.

もし Posix 時差域文字列が夏時間( DST )部を含むが､夏時間の開始と終了の規則を含まない場合は省略時設定規則を使う｡時差域が 0 と +12 の間は現在の欧州/露西亜規則が使われる､それ以外は米国規則が使われる｡欧州(時差 +0 to +2の間)は５月最終日曜日のグリニッジ時刻 1:00 に夏時間に切替える､１０月最終日曜日のグリニッジ時刻 2:00 に戻す｡露西亜(時差 +3 to +12)では､夏時間開始は同じ日の現地時間 2:00 に開始し､現地時間 3:00 に全域で戻す｡米国では５月第２日曜日現地時間 2:00 に切り替え､１１月第１日曜日の現地時間 3:00 に戻す｡この省略時設定規則は全ての欧州､露西亜､米国(それと同調した場所)時刻域内で､夏時間計算は2007以降では規則が変わらない限り正確になることを意味する｡ 　　　 If the Posix time zone string contains a DST (Daylight Savings Time) part, but doesn't contain a rule stating when DST starts or ends, then default rules are used. For Timezones with an offset between 0 and +12, the current European/Russian rules are used, otherwise the current US rules are used. In Europe (offset +0 to +2) the switch to summertime is done each last Sunday in March at 1:00 GMT, and the switch back is each last Sunday in October at 2:00 GMT. In Russia (offset +3 to +12), the switch dates are the same, only the switch to summertime is at 2:00 local time, and the switch back is at 3:00 local time in all time zones. The US switch to summertime takes place each second Sunday in March at 2:00 local time, and the switch back is each first Sunday in November at 3:00 local time. These default rules mean that in all European, Russian and US (or compatible) time zones, DST calculations will be correct for dates in 2007 and later, unless in the future the rules change again.

その他の如何なる時差域文字列も､上述の様に､先頭にコロンを冠し､地域名として使用することを試みることにより､処理される｡ 　　　 Any other time zone string is processed by prefixing a colon and attempting to use it as a location name, as above.

### 地方化　 LOCALIZATION

日付と時刻の書式化と構文解析の地方化を希望する開発者は､規格に関する https://tip.tcl-lang.org/173 を参照されたい｡ 　　 Developers wishing to localize the date and time formatting and parsing are referred to https://tip.tcl-lang.org/173 for a specification.

### FREE FORM SCAN

もし -format 指定なしで clock scan 命令が起動されると､自由書式変換が要求される｡この形式の変換は批判がある｡批判の理由は､曖昧さが余りにも多いことである｡(文字列 “2000” が表すのは西暦か､年内の日にち番号か､量なのか?)｡全ての場合に､自由書式の日付､時刻を妥当な結果にさせる規則は存在しない｡ 　　　 If the clock scan command is invoked without a -format option, then it requests a free-form scan. This form of scan is deprecated. The reason for the deprecation is that there are too many ambiguities. (Does the string “2000” represent a year, a time of day, or a quantity?) No set of rules for interpreting free-form dates and times has been found to give unsurprising results in all cases.

もし自由書式の変換が使われると､ -base と -gmt 指定のみが､受入れられる｡ -format が与えられないと､ -timezone と -locale 指定は不都合に陥る｡ 　　　 If free-form scan is used, only the -base and -gmt options are accepted. The -timezone and -locale options will result in an error if -format is not supplied.

自由書式の変換を使用した歴史ものの譜を理解する必要のある使用者に対する利益は､文字列を自由書式変換が如何に解釈するかの文書が此処に含まれている: 　　　 For the benefit of users who need to understand legacy code that uses free-form scan, the documentation for how free-form scan interprets a string is included here:

もし､時刻のみが指定されていると､現在の日付が仮定される｡もし､入力文字列が時差域の記号を含んでいないと､ -gmt 引数が真でない限り､地方時差が仮定される､その場合､時刻の指定は､グリニッジ標準時に相対的であると仮定している｡もし､-gmt が指定されると､計算された時刻に対してのみ効果が及び､ -base の解釈には効果がない｡ 　　　 If only a time is specified, the current date is assumed. If the inputString does not contain a time zone mnemonic, the local time zone is assumed, unless the -gmt argument is true, in which case the clock value is calculated assuming that the specified time is relative to Greenwich Mean Time. -gmt, if specified, affects only the computed time value; it does not impact the interpretation of -base.

もし､ -base 標識が指定されていると､次の引数は整数の時刻値を含む｡日付のみにこの値を使用し､時刻には使わない｡特定の日付の時刻の決定や､他の相対日付変換の実施には､これが便利である｡ 　　　 If the -base flag is specified, the next argument should contain an integer clock value. Only the date in this value is used, not the time. This is useful for determining the time on a specific day or doing other date-relative conversions.

入力引数は次の書式の零あるいはそれ以上の規定を含む: 　　　 The inputString argument consists of zero or more specifications of the following form:

time
  一日の時刻､その書式は: hh?:mm?:ss?? ?meridian? ?zone? 若しくは hhmm ?meridian? ?zone? もし午前午後が指定されないと､ hh は24時制として解釈される｡ 　　　 A time of day, which is of the form: hh?:mm?:ss?? ?meridian? ?zone? or hhmm ?meridian? ?zone? If no meridian is specified, hh is interpreted on a 24-hour clock.

date
  特定の月と日､年を伴うこともある｡受入れられる書式は､ “mm/dd?/yy?”, “monthname dd?, yy?”, “day, dd monthname ?yy?”, “dd monthname yy”, “?CC?yymmdd”, “dd-monthname-?CC?yy” である｡西暦年は省略されると現在年である｡もし､年が100未満の時､ 00-68 は2000-2068 と解釈し､ 69-99 は 1969-1999 とする｡全てのOSで 38-70 年が表現できる訳ではなく､この年が使われると不都合に陥るかもしれない｡ [訳注 上記“-timezone zoneName”の項目に記述されている３２ビット整数表現の限界を指す] 　　　　 A specific month and day with optional year. The acceptable formats are “mm/dd?/yy?”, “monthname dd?, yy?”, “day, dd monthname ?yy?”, “dd monthname yy”, “?CC?yymmdd”, and “dd-monthname-?CC?yy”. The default year is the current year. If the year is less than 100, we treat the years 00-68 as 2000-2068 and the years 69-99 as 1969-1999. Not all platforms can represent the years 38-70, so an error may result if these years are used.

ISO 8601 point-in-time
  ISO 8601 の位置と時間 規定､譬えば､ “CCyymmdd T hhmmss” ここで､T は文字の “T” 又は､ “CCyymmdd hhmmss” 又は､ “CCyymmdd T hh:mm:ss” 又は､ “CCyy-mm-dd T hh:mm:ss” ｡註意すべきは､この四種の書式のみ受入れられる｡この命令は ISO8601 の全ての位置と時間を受入れられるのではない｡他の形式は clock scan 命令に与える明示的 -format 指示項目により認識され得る｡ 　　 An ISO 8601 point-in-time specification, such as “CCyymmdd T hhmmss,” where T is the literal “T”, “CCyymmdd hhmmss”, “CCyymmdd T hh:mm:ss”, or “CCyy-mm-dd T hh:mm:ss.” Note that only these four formats are accepted. The command does not accept the full range of point-in-time specifications specified in ISO8601. Other formats can be recognized by giving an explicit -format option to the clock scan command.

relative time
  現在時刻に対する相対指定｡書式は 数値 単位 である｡受入れられる単位は year, fortnight, month, week, day, hour, minute (又は min) second (又は sec) である｡この単位は､3 weeks の如く単数も複数も指定できる｡この様な修飾子も規定される: tomorrow, yesterday, today, now, last, this, next, ago. (訳註､英語ばかりで不便！ラテン語はないのか) 　　　 A specification relative to the current time. The format is number unit. Acceptable units are year, fortnight, month, week, day, hour, minute (or min), and second (or sec). The unit can be specified as a singular or plural, as in 3 weeks. These modifiers may also be specified: tomorrow, yesterday, today, now, last, this, next, ago.

実際の日付は次の手順に従って算出する｡ 　　　 The actual date is calculated according to the following steps.

最初に､何かの絶対的な 日にち 及び/又は 時刻 が施されて変換される｡その時刻を基礎に使用して､規格化された､週中の順番番号が加えられる｡次に､相対的な指定が使われる｡もし､日付か日にちが指定され､且つ､絶対又は相対時間が何も与えられていないと､夜半が使われる｡最後に､夏時間による差異を考慮に入れ正しい時刻が生成され､又､３１日の月から３０日への月に移行する時は､修正日付が与えられて､修正が施される｡ 　　　 First, any absolute date and/or time is processed and converted. Using that time as the base, day-of-week specifications are added. Next, relative specifications are used. If a date or day is specified, and no absolute or relative time is given, midnight is used. Finally, a correction is applied so that the correct hour of the day is produced after allowing for daylight savings time differences and the correct date is given when going from the end of a long month to a short month.

### SEE ALSO

msgcat

### KEYWORDS

clock, date, time

### COPYRIGHT

Copyright © 2004 Kevin B. Kenny <kennykb@acm.org>. All rights reserved.
Copyright © 2004 Kevin B. Kenny <kennykb(at)acm.org>. All rights reserved.