Linuxが時間を取得する方法
13488 ワード
Linux Cの下で時間を取得するいくつかの方法を統計して、以下の通りです.
0、以下のコードに必要なヘッダファイル
1、取得年月日時分秒
gmtimeが世界を取得したときの時間、すなわちグリニッジ(GMT)時間なので、時間にタイムゾーンの時差を加える
2、フォーマット出力年月日時分秒以下の方式は出力フォーマットした時間であり、現在使用されている状況は比較的少ない
3、プログラムの実行時間を統計するためのいくつかの時間取得方式
時間単位は次のように換算されます.
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 */