Linux verfügt über Funktionen zum Berechnen der Zeit, wie zum Beispiel: die Funktion time(), die den Zeitunterschied auf der zweiten Ebene ermitteln kann, die Funktionen gettimeofday() und settimeofday(), die den Zeitunterschied auf Mikrosekundenebene ermitteln können, die Funktion clock_gettime( ), die den Zeitunterschied im Nanosekundenbereich usw. ermitteln kann.
Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Dell G3-Computer.
Im Folgenden werden die zeitbezogenen Funktionen und die Zeitumrechnungsfunktionen in Linux erläutert.
1. Holen Sie sich zeitbezogene Funktionen long integer Typ, der den Zeitunterschied auf Sekundenebene von der UTC-Zeit (0:00:00 am 1. Januar 1970, der Epochenzeit des Linux-Systems) zur aktuellen Systemzeit darstellt
1.2 Ermitteln Sie den Zeitunterschied auf Mikrosekundenebene Funktion#include <time.h>
time_t time(time_t *timer);//通过函数返回值或者timer 变量均可以获取到当前时间
2. Konvertieren Sie die zeitbezogene Funktion
2.1 Konvertieren Sie den durch die obige Zeiterfassungsfunktion erhaltenen Zeitparameter time_t in eine Struktur
struct tm, das das Jahr enthält. Sehr detaillierte Felder wie Monat, Tag usw. Wie unten gezeigt: #include <sys/time.h>
#include <unistd.h>
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
struct timezone{
int tz_minuteswest; /*miniutes west of Greenwich*/
int tz_dsttime; /*type of DST correction*/
};
//函数执行成功返回0,失败返回-1. 其中timezone 是时区相关的结构体
int gettimeofday(struct timeval *tv, struct timezone *tz);
//用来设置制定的时间和时区信息
int settimeofday(const struct timeval *tv, const struct timezone *gz);
#include <time.h>
/*
其中clk_id 用来制定对应的时钟类型,不同的类型可以用来获取不同的时间值,具体有四种:
CLOCK_REALTIME: 系统实时时间,从UTC开始计时,若时间被用户更改计数时间相应改变;
CLOCK_MONOTONIC: 从系统启动开始计时,即使用户更改时间也没有影响;
CLOCK_PROCESS_CPUTIME_ID: 本进程开始到执行到当前程序系统CPU花费的时间;
CLOCK_THREAD_CPUTIME_ID: 本线程开始到执行到当前程序系统CPU花费的时间
*/
struct timespec{
time_t tv_sec; //s
long tv_nsec; //ns
};
int clock_gettime(clockid_t clk_id, struct timespec* tp);
2.2 Konvertieren Sie time_t in die Zeit- und Datumszeichenfolgen, die wir normalerweise verwenden
Die entsprechende Konvertierungsfunktion lautet wie folgt:
#include <time.h> struct tm{ int tm_sec; //秒 int tm_min; //分 int tm_hour; //时;取值区间为[0, 23] int tm_mday; //日;取值区间为[1, 31] int tm_mon; //月份;取值区间为[0, 11]; 0表示1月份依次递增到12月份 int tm_year; //年份;其值为1900年至今年数 int tm_wday; //星期;0代表星期天,1代表星期1,以此类推 int tm_yday; //日期;0代表1月1日 int tm_isdst; //夏令时标识符;使用夏令时为正,不使用t为0,不确定时为负*/ };
Die entsprechende Funktion lautet wie folgt:#include <time.h>
struct tm* gmtime(const time_t* timep);
struct tm*localtime(const time_t* timep);
Die entsprechenden Funktionen lauten wie folgt: String#include <time.h>
char* ctime(time_t* timep);
3. Beispiel
#include <time.h>
time_t mktime(struct tm *p_tm);
#include <time.h> char *asctime(const struct tm *p_tm); //习惯性字符串 Thu Dec 9 07:13:35 2021
Wenn Sie die Zeit vom Systemstart erhalten möchten, wird sie nicht beeinflusst, auch wenn der Benutzer die Zeit ändert, und zwar in Millisekunden , zum Beispiel:/**************************************
** description: 将struct tm 按照指定的format格式转化成字符串
** parameter:
** *s : 需要被转换的时间字符串
** *format:时间字符串的格式
** *tm:转换后的tm时间
**************************************/
char *strptime(const char *s, const char *format, struct tm *tm);
“
Das obige ist der detaillierte Inhalt vonVerfügt Linux über eine Funktion zur Zeitberechnung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!