Linuxが時間を取得する方法

13488 ワード

Linux Cの下で時間を取得するいくつかの方法を統計して、以下の通りです.
0、以下のコードに必要なヘッダファイル
#include 
#include 
#include 
#include 
#include 

1、取得年月日時分秒
/*          */
void get_time_ymdhs()
{
    time_t t;
    struct tm *p;

    time(&t);
    p = gmtime(&t);

    printf("%d
"
, 1900 + p->tm_year); /* , p->tm_year 1900 , 2019 ,p->tm_year 119, 1900 */ printf("%d
"
, 1 + p->tm_mon); /* , p->tm_mon 0-11, 1 */ printf("%d
"
, p->tm_mday); /* ,p->tm_mday 1-31 */ printf("%d
"
, 8 + p->tm_hour); /* , , , 8 */ printf("%d
"
, p->tm_min); /* */ printf("%d
"
, p->tm_sec); /* */ printf("%d
"
, p->tm_yday); /* 1 1 , 0~365 */ }

gmtimeが世界を取得したときの時間、すなわちグリニッジ(GMT)時間なので、時間にタイムゾーンの時差を加える
2、フォーマット出力年月日時分秒以下の方式は出力フォーマットした時間であり、現在使用されている状況は比較的少ない
/*            :Www Mmm dd hh:mm:ss yyyy */
void asctime_get_time()
{
    time_t t;
    struct tm *p;

    time(&t);
    p = gmtime(&t);

    p->tm_hour += 8; /*        ,    +8 */

    printf("%s
"
, asctime(p)); }
/*            :Www Mmm dd hh:mm:ss yyyy */
void ctime_get_time()
{
    time_t t;
    time(&t);

    printf("%s
"
, ctime(&t)); /* */ }
/*            :Www Mmm dd hh:mm:ss yyyy */
void localtime_get_time()
{
    time_t t;
    struct tm *p;

    time(&t);
    p = localtime(&t); /*             */

    printf("%s
"
, asctime(p)); }

3、プログラムの実行時間を統計するためのいくつかの時間取得方式
/*      (      )   */
void get_microsecond_time()
{
    struct timeval tv;
    struct timezone tz;
    gettimeofday(&tv, &tz); /* tz   NULL */

    printf("sec: %ld
"
, tv.tv_sec); /* */ printf("usec: %ld
"
, tv.tv_usec); /* */ printf("tz_minuteswest: %d
"
, tz.tz_minuteswest); /* , */ printf("tz_dsttime: %d
"
, tz.tz_dsttime); /* DST , */ }
/*      (      )   */
void get_nanosecond_time()
{
    struct timespec ts;
    clock_gettime(CLOCK_REALTIME, &ts);

    printf("sec: %ld
"
, ts.tv_sec); /* */ printf("nsec: %ld
"
, ts.tv_nsec); /* */ }

時間単位は次のように換算されます.
#define SECOND 1 /* 1  */
#define MILLISECOND 1000 /* 1      */
#define MICROSECOND 1000 * 1000 /* 1      */
#define NANOSECOND 1000 * 1000 * 1000 /* 1      */