## Tcl9.0.3/Tk9.0.3 Documentation > Tcl C API > GetTime

### 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
    Tcl_GetTime, Tcl_SetTimeProc, Tcl_QueryTimeProc — 日付と時刻を得る　 get date and time
  SYNOPSIS
    #include <tcl.h>
    Tcl_GetTime(timePtr)
    Tcl_SetTimeProc(getProc, scaleProc, clientData)
    Tcl_QueryTimeProc(getProcPtr, scaleProcPtr, clientDataPtr)
  引数 ARGUMENTS
    Tcl_Time *timePtr (出力out)
    Tcl_GetTimeProc getProc (入力in)
    Tcl_ScaleTimeProc scaleProc (入力in)
    void *clientData (入力in)
    Tcl_GetTimeProc *getProcPtr (出力out)
    Tcl_ScaleTimeProc *scaleProcPtr (出力out)
    void **clientDataPtr (出力out)
  説明 DESCRIPTION
  VIRTUALIZED TIME
  SEE ALSO
  KEYWORDS

### NAME

Tcl_GetTime, Tcl_SetTimeProc, Tcl_QueryTimeProc — 日付と時刻を得る　 get date and time

### SYNOPSIS

#include <tcl.h>
Tcl_GetTime(timePtr)
Tcl_SetTimeProc(getProc, scaleProc, clientData)
Tcl_QueryTimeProc(getProcPtr, scaleProcPtr, clientDataPtr)

### 引数 ARGUMENTS

Tcl_Time *timePtr (出力out)
  日付と時刻の情報を保存する記憶域を指す｡　 Points to memory in which to store the date and time information.

Tcl_GetTimeProc getProc (入力in)
  Tcl_GetTime の OS への利用を置換する操作子函数への指示子｡　 Pointer to handler function replacing Tcl_GetTime's access to the OS.

Tcl_ScaleTimeProc scaleProc (入力in)
  仮想的領域から実時間への時間遅れの変換の為の操作子函数への指示子｡ Pointer to handler function for the conversion of time delays in the virtual domain to real-time.

void *clientData (入力in)
  二つの操作子函数を通して渡される値｡　 Value passed through to the two handler functions.

Tcl_GetTimeProc *getProcPtr (出力out)
  現在登録されている get handler 函数を入れる場所への指示子｡　 Pointer to place the currently registered get handler function into.

Tcl_ScaleTimeProc *scaleProcPtr (出力out)
  現在登録されている尺度操作子函数を入れる場所への指示子｡　 Pointer to place the currently registered scale handler function into.

void **clientDataPtr (出力out)
  現在登録されている 手渡し 値を入れる場所への指示子｡　 Pointer to place the currently registered pass-through value into.

### 説明 DESCRIPTION

Tcl_GetTime 函数は呼出し側が提供した記憶域に現在の時刻を Tcl_Time 構造として取出す｡構造は次の様に定義される: The Tcl_GetTime function retrieves the current time as a Tcl_Time structure in memory the caller provides. This structure has the following definition:

    typedef struct {
        long long sec;
        long usec;
    } Tcl_Time;

帰る際､構造の sec 要員は特定時刻から経過した秒の数値を埋められる､その特定時刻は協定世界時の1970.年１月１日 00:00 である｡この数は閏秒を勘定していない ; １日の進捗期間は閏秒が挿入されたかを考慮せずに 86400 秒である｡ On return, the sec member of the structure is filled in with the number of seconds that have elapsed since the epoch: the epoch is the point in time of 00:00 UTC, 1 January 1970. This number does not count leap seconds; an interval of one day advances it by 86400 seconds regardless of whether a leap second has been inserted.

構造の usec 要員は sec によって設計された開始から経過した千分の１秒単位の数値で満たされる｡ Tcl 外部函数は､計算機装置系の限界に支配されたこの数値を可能な限り正確に保持するためにあらゆる努力をした｡ Windows,の多処理装置系では､この数は装置系時計よりも 10- or 20-厘秒荒く限定される｡(１個の処理装置の Windows 系では usec 欄は実行計数装置から誘導されより精度が高い｡) The usec member of the structure is filled in with the number of microseconds that have elapsed since the start of the second designated by sec. The Tcl library makes every effort to keep this number as precise as possible, subject to the limitations of the computer system. On multiprocessor variants of Windows, this number may be limited to the 10- or 20-ms granularity of the system clock. (On single-processor Windows systems, the usec field is derived from a performance counter and is highly precise.)

#### VIRTUALIZED TIME

Tcl_SetTimeProc 函数は二つの関連した処理操作子函数を中核に登録する｡第１処理操作子函数は Tcl_GetTime の為の置換えであり､寧ろ Tcl_GetTime によって作成されたOSの利用である｡他の処理操作子函数は 待ち/同期 時間を仮想範囲から実時刻に変換する為にTcl 通告譜によって使われる｡ The Tcl_SetTimeProc function registers two related handler functions with the core. The first handler function is a replacement for Tcl_GetTime, or rather the OS access made by Tcl_GetTime. The other handler function is used by the Tcl notifier to convert wait/block times from the virtual domain into real time.

Tcl_QueryTimeProc 函数は現在登録されている処理操作子函数を返す｡もし外部処理操作子が設定されていない場合､これはOS固有の時刻を利用し処理する標準処理操作子が返される｡函数への引数は NULL であることが許容される; NULL であるどの引数も無視され設定されない｡ The Tcl_QueryTimeProc function returns the currently registered handler functions. If no external handlers were set then this will return the standard handlers accessing and processing the native time of the OS. The arguments to the function are allowed to be NULL; and any argument which is NULL is ignored and not set.

処理操作子函数の定義は次の通り: The signatures of the handler functions are as follows:

    typedef void Tcl_GetTimeProc(
            Tcl_Time *timebuf,
            void *clientData);
    typedef void Tcl_ScaleTimeProc(
            Tcl_Time *timebuf,
            void *clientData);

timebuf 欄は操るべき時刻を含む､又､ clientData 欄は処理操作子函数が登録されている時刻に供給されたポインターを含む｡ The timebuf fields contain the time to manipulate, and the clientData fields contain a pointer supplied at the time the handler functions were registered.

どの指定された処理操作子の対も整合がとれているデータを返さねばならない｡言換えると､対の一つの処理操作子を何かが 10-倍速度を落とすと仮定する､対の他方の処理操作子をなにか二倍速度を落とす設定は誤りであり許容されない｡ Any handler pair specified has to return data which is consistent between them. In other words, setting one handler of the pair to something assuming a 10-times slowdown, and the other handler of the pair to something assuming a two-times slowdown is wrong and not allowed.

処理操作子函数の設定は伝えられた時間を後ろ向きに実行することも許容されるがそれは避けるべきである｡使用者が系の時間を一方向または他の方向に弄ぶことができると､固有の時間も後ろ向きに走る事を許容しなくてはならなくなる｡註意すべきは､連結の挿入はこの状態を考慮した Tcl 中核の振舞いを変更するこてはない､即ち､既存の振舞いは維持される｡ The set handler functions are allowed to run the delivered time backwards, however this should be avoided. We have to allow it as the native time can run backwards as the user can fiddle with the system time one way or other. Note that the insertion of the hooks will not change the behavior of the Tcl core with regard to this situation, i.e. the existing behavior is retained.

### SEE ALSO

clock

### KEYWORDS

date, time
Copyright © 2001 Kevin B. Kenny <kennykb(at)acm.org>.