Heim > Betrieb und Instandhaltung > Betrieb und Wartung von Linux > Verfügt Linux über eine Funktion zur Zeitberechnung?

Verfügt Linux über eine Funktion zur Zeitberechnung?

青灯夜游
Freigeben: 2023-04-11 17:46:53
Original
1603 Leute haben es durchsucht

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.

Verfügt Linux über eine Funktion zur Zeitberechnung?

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 变量均可以获取到当前时间
Nach dem Login kopieren

1.3 Holen Sie sich die Nanosekunden-Zeitdifferenzfunktion

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);
Nach dem Login kopieren
Die häufig verwendeten Funktionen zum Konvertieren von time_t in eine Struktur-TM-Struktur sind wie folgt:
#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);
Nach dem Login kopieren
Die Funktionen gmtime() und localtime() können das Datenformat time_t in den Formattyp tm konvertieren. Der Unterschied besteht darin, dass das Ergebnis der Konvertierung durch gmtime() die Information ist, die GMT (zentrale Zeitzone) entspricht, während das Ergebnis der Konvertierung durch die Funktion localtime() die Information der aktuellen Zeitzone ist.

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,不确定时为负*/
};
Nach dem Login kopieren

2.3 Konvertieren Sie struct tm in time_t

Die entsprechende Funktion lautet wie folgt:

#include <time.h> 
struct tm* gmtime(const time_t* timep);
struct tm*localtime(const time_t* timep);
Nach dem Login kopieren

2.4 Konvertieren Sie struct tm in die Zeit- und Datumszeichenfolgen, die wir normalerweise verwenden.

Die entsprechenden Funktionen lauten wie folgt: String

#include <time.h>
char* ctime(time_t* timep);
Nach dem Login kopieren

3. Beispiel

#include <time.h>
time_t mktime(struct tm *p_tm);
Nach dem Login kopieren

Spezifische Zeitzeichenkonvertierung

#include <time.h>
char *asctime(const struct tm *p_tm); //习惯性字符串 Thu Dec  9 07:13:35 2021
Nach dem Login kopieren

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);
Nach dem Login kopieren
Verwandte Empfehlungen: „

Linux Video Tutorial

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage