linuxの下で時間に関連するいくつかの関数の総括

6366 ワード

1asctime

  • 関数の概要
  • 時間と日付を文字列で表す

  • そうかんかんすう
  • time,ctime,gmtime,localtime
  • ヘッダファイル
  • #include
  • 関数プロトタイプ
  • char * asctime(const struct tm * timeptr);
  • 関数説明
  • asctime()は、パラメータtimeptrが指すtm構造の情報を実世界で使用される時間日付表現方法に変換し、結果を文字列形式で返す.この関数はタイムゾーンからローカル時間に変換され、文字列形式は「Wed Jun 30 21:49:08 1993」です.
  • 戻り値
  • 現在の現地の時刻を表す文字列を返します.
  • 追加説明
  • 関連する日付関数を呼び出すと、この文字列が破壊される可能性があります.この関数がctimeと異なるのは、入力されたパラメータが異なる構造であることです.
  • #include <time.h>
    main()
    {
        time_t timep;
        time (&timep);
        printf(“%s”,asctime(gmtime(&timep)));
    }

    実行結果:
    Sat Oct 28 02:10:06 2000
    2ctime
  • 関数概要
  • 時間と日付を文字列で表す
  • 相関関数
  • time,asctime,gmtime,localtime
  • ヘッダファイル
  • #include
  • 関数プロトタイプ
  • char *ctime(const time_t *timep);
  • 関数説明
  • ctime()パラメータtimepが指すtime_t構造における情報は,実世界で使用される時間日付表現方法に変換され,結果を文字列形態で返す.この関数はタイムゾーンからローカル時間に変換され、文字列フォーマットは「Wed Jun 30 21:49:08 1993」です.関連する日付関数を呼び出すと、この文字列が破壊される可能性があります.
  • 戻り値
  • 現在の現地の日付を表す文字列を返します.
  • #include<time.h>
    main()
    {
        time_t timep;
        time (&timep);
        printf(“%s”,ctime(&timep));
    }

    実行結果:
    Sat Oct 28 10 : 12 : 05 2000
    3gmtime
  • 関数概要
  • 現在の時刻と日付を取得
  • 相関関数
  • time,asctime,ctime,localtime
  • ヘッダファイル
  • #include
  • 関数プロトタイプ
  • struct tm*gmtime(const time_t*timep);
  • 関数説明
  • gmtime()パラメータtimepが指すtime_t構造における情報は、実世界で使用される時間日付表現方法に変換され、結果は構造tmによって返される.構造tmの定義はstruct tm{int tm_sec;int tm_min;int tm_hour;int tm_mday;int tm_mon;int tm_year;int tm_wday;int tm_yday;int tm_isdst;};int tm_secは現在の秒数を表し、正常範囲は0-59であるが、61秒int tm_まで許容される.minは現在のスコアを表し、範囲0-59 int tm_hour真夜中からの時間数は、0-23 int tm_mday現在の月の日数、範囲01-31 int tm_monは現在の月を表し、1月から計算すると、範囲は0-11 int tm_year 1900年から現在までの年数int tm_wday 1週間の日数は、月曜日から0-6 int_ydayは今年1月1日から現在までの日数を0-365 int_isdst日光節約時間フラグこの関数が返す時間日付は、タイムゾーン変換ではなくUTC時間です.
  • 戻り値
  • 戻り構造tmは、現在のUTC時間を表す
  • #include <time.h>
    main()
    
    {
        char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
        time_t timep;
        struct tm *p;
    
    
    time(&timep);
    p=gmtime(&timep);
    printf(“%d%d%d”,(1900+p->tm_year), (1+p->tm_mon),p->tm_mday);
    printf(“%s%d;%d;%d
    ”, wday[p->tm_wday], p->tm_hour, p->tm_min, p->tm_sec); }

    実行結果:
    2000/10/28 Sat 8:15:38
    4gettimeofday
  • 関数概要
  • 現在の時間をとる
  • 相関関数
  • time,ctime,ftime,settimeofday
  • ヘッダファイル
  • #include #include
  • 関数プロトタイプ
  • int gettimeofday ( struct timeval * tv , struct timezone * tz )
  • 関数説明
  • gettimeofday()は現在の時間をtvが指す構造で返し,現地タイムゾーンの情報はtzが指す構造に格納する.
    timeval構造は、struct timeval{long tv_sec;/*秒*/long tv_usec;/*マイクロ秒*/}と定義される.timezone構造は、struct timezone{int tz_minuteswest;/*とGreenwichの時間差が何分あるか*/int tz_dsttime;/*日光が時間を節約する状態*/}と定義される.上記の2つの構造は、/usr/include/sys/timeに定義.h.
    tz_dsttimeが表す状態は以下のDST_NONE/*使用しない*/DST_USA/*アメリカ*/DST_AUST/*オーストラリア*/DST_WET/*西欧*/DST_MET/*中欧*/DST_EET/*東欧*/DST_CAN/*カナダ*/DST_GB/*ブリテン*/DST_RUM/*ルーマニア*/DST_TUR/*トルコ*/DST_AUSTALT/*オーストラリア(1986年以降)*/
  • 戻り値
  • 成功すると0が返され、失敗すると-1が返され、エラーコードはerrnoに保存されます.さらに、EFAULTポインタtvおよびtzが指すメモリ領域がアクセス権限を超えていることを示す.


  • #include<sys/time.h>
    #include<unistd.h>
    main(){
        struct timeval tv;
        struct timezone tz;
    
    
        gettimeofday (&tv , &tz);
        printf(“tv_sec; %d
    ”, tv.tv_sec) ; printf(“tv_usec; %d
    ”,tv.tv_usec); printf(“tz_minuteswest; %d
    ”, tz.tz_minuteswest); printf(“tz_dsttime, %d
    ”,tz.tz_dsttime); }

    実行結果:
    tv_sec: 974857339 tv_usec:136996 tz_minuteswest:-540 tz_dsttime:0
    5 localtime
  • 関数概要
  • 現地の現在時刻と日付を取得
  • 相関関数
  • time, asctime, ctime, gmtime
  • ヘッダファイル
  • #include
  • 関数プロトタイプ
  • struct tm *localtime(const time_t * timep);
  • 関数説明
  • localtime()パラメータtimepが指すtime_t構造における情報は、実世界で使用される時間日付表現方法に変換され、結果は構造tmによって返される.構造tmの定義はgmtime()を参照してください.この関数が返す日付は、ローカルタイムゾーンに変換されました.

  • 戻り値
  • 戻り構造tmは、現在の現地時間を表す.
  • #include<time.h>
    main()
    
    {
    char *wday[]={“Sun”,”Mon”,”Tue”,”Wed”,”Thu”,”Fri”,”Sat”};
    time_t timep;
    struct tm *p;
    
    
    time(&timep);
    p=localtime(&timep); /*      */
    printf (“%d%d%d ”, (1900+p->tm_year),( l+p->tm_mon), p->tm_mday);
    printf(“%s%d:%d:%d
    ”, wday[p->tm_wday],p->tm_hour, p->tm_min, p->tm_sec); }

    実行結果:
    2000/10/28 Sat 11:12:22
    6 mktime
  • 関数概要
  • 時間構造データを経過する秒数に変換する.
  • 相関関数
  • time,asctime,gmtime,localtime
  • ヘッダファイル
  • #include
  • 定義関数
  • time_t mktime(strcut tm * timeptr);
  • 関数プロトタイプ
  • mktime()は、パラメータtimeptrが指すtm構造データを、西暦1970年1月1日0時0分0秒から現在までのUTC時間を計算した秒数に変換するために使用される.
  • 戻り値
  • 経過した秒数を返します.
  • /*time()で時間(秒数)を取得し、localtime()でstruct tmに変換mktine()を再利用してstruct tmを元の秒数に変換*/
    #include<time.h>
    main()
    {
        time_t timep;
        strcut tm *p;
    
    
        time(&timep);
        printf(“time() : %d 
    ”,timep); p=localtime(&timep); timep = mktime(p); printf(“time()->localtime()->mktime():%d
    ”,timep); }

    実行結果:
    time():974943297 time()->localtime()->mktime():974943297
    7settimeofday
  • 関数概要
  • 現在時刻の設定
  • 相関関数
  • time,ctime,ftime,gettimeofday
  • ヘッダファイル
  • #include #include
  • 関数プロトタイプ
  • int settimeofday ( const struct timeval *tv,const struct timezone *tz);
  • 関数説明
  • settimeofday()は現在の時間をtvが指す構造情報に設定し,現地タイムゾーン情報はtzが指す構造に設定する.詳細はgettimeofday()を参照してください.この関数を使用して時間を変更できるのはroot権限のみです.
  • 戻り値
  • 成功すると0が返され、失敗すると-1が返され、エラーコードはerrnoに保存されます.
    エラーコード
    EPERMはroot権限からsettimeofday()を呼び出すのではなく、権限が足りません.EINVALタイムゾーンまたはデータが正しくないため、時間を正しく設定できません.
    8time
  • 関数概要
  • 現在の時刻を取得
  • 相関関数
  • ctime,ftime,gettimeofday
  • ヘッダファイル
  • #include
  • 関数プロトタイプ
  • time_t time(time_t *t);
  • 関数説明
  • この関数は、西暦1970年1月1日のUTC時間が0時0分0秒から現在までの秒数を返します.tが空のポインタでない場合、この関数は戻り値をtポインタが指すメモリに格納します.
  • 戻り値
  • 成功すると秒数が返され、失敗すると(time_t)-1)値が返され、エラーの原因がerrnoに保存されます.
  • #include<time.h>
    mian()
    {
        int seconds= time((time_t*)NULL);
        printf(“%d
    ”,seconds); }