linux下的時間操作

2021-07-05 21:17:12 字數 2454 閱讀 4382

1 概述

由unix核心提供的基本時間服務是計算自國際標準時間公元2023年1月1日00:00:00以來經過的秒數。這種秒數是以資料型別time_t表示的,我們稱之為日曆時間。一旦取得這種以秒計的整型時間值後,通常要呼叫另乙個時間函式將其轉換為人們可讀的時間和日期,我們稱之為分解時間。為了將分解時間以各種形式顯示出來,通常要呼叫一些函式將其轉換成相應的字串。具體轉換如下圖:

2 日曆時間

2.1 time函式

time函式返回當前時間和日期

#include time_t time(time_t *calptr);
時間值總是作為函式值返回。如果引數不為空,則時間值也存放在由calptr指向的單元內。

簡單應用:

time_t cur_time;

cur_time = time(null);

ortime(&cur_time);

2.2 gettimeofday函式與time函式相比,gettimeofday提供了更高的解析度(最高為微妙級)。

#include int gettimeofday(struct timeval *restrict tp, void *restrict tzp);
tzp的唯一合法值是null,其他值則將產生不確定的結果。某些平台支援用tzp說明時區,但這完全依實現而定。

gettimeofday函式將當前時間存放在tp指向的timeval結構中,而該結構儲存秒和微妙。

struct timeval
3 分解時間兩個函式localtime和gmtime將日曆時間轉換成以年/月/日/時/分/秒/週日表示的時間,並將這些存放在乙個tm結構中。

struct tm ;
秒可以超過59的理由是可以表示潤秒。注意,除了日欄位,其他欄位的值都以0開始。如果夏時制生效,則夏時制標誌值為正;如果為非夏時制時間,則該標誌值為0;如果此資訊不可用,則其值為負。

#include struct tm *gmtime(const time_t *timep);

struct tm *localtime(const time_t *timep);

localtime和gmtime之間的區別是:localtime將日曆時間轉換成本地時間(考慮到本地時區和夏時制標誌),而gmtime則將日曆時間轉換成國際標準時間。

函式mktime以本地時間的年月日等作為引數,將其轉換成time_t值。

#include time_t mktime(struct tm *tm);
4 字串時間4.1 預設形式asctime和ctime函式產生大家都熟悉的26位元組的字串,這與data(1)命令的系統預設輸出形式類似。

如:thu oct 15 11:09:25 2015

#include char *asctime(const struct tm *tm);

char *ctime(const time_t *timep);

asctime的引數是指向年/月/日等字串的指標,而ctime的引數則是指向日曆時間的指標。

4.2 可變形式

最後乙個時間函式是strftime,它是非常複雜的類似於printf的時間值函式。

#include size_t strftime(char *buf, size_t max, const char *format,

const struct tm *tm);

最後乙個引數是要格式化的時間值,由乙個指向tm結構的指標指定。格式化結果存放在乙個長度為max個字元的buf陣列中,如果buf長度足以存放格式化結果及乙個null終止符,則該函式返回在buf中存放的字元數(不包括null),否則該函式返回0.

格式:

5 例項

#include #include #include int main()

輸出結果:

ctime: thu oct 15 14:31:49 2015

asctime: thu oct 15 14:31:49 2015

strftime: 10-15-2015 02:31pm

linux的時間操作

修改linux的時間可以使用date指令 修改日期 時間設定成2009年5月10日的命令如下 date s 05 10 2009 修改時區 找到相應的時區檔案 usr share zoneinfo asia shanghai替換當前的 etc localtime。修改 etc sysconfig c...

Linux時間操作

在嵌入式開發平台中,經常會用到linux時間函式的一些操作,包括時間戳的讀取 時間格式的轉換等,以下是linux時間操作中重要的函式及結構體的說明。重要結構體 struct tm 相關函式 time 獲取時間戳 函式原型 time t time time t t 說明 返回從1970年1 月1日0 ...

linux時間操作

一 直接呼叫系統變數 獲取今天時期 date y m d 獲取昨天時期 date d yesterday y m d 獲取前天日期 date d 2day y m d 依次類推比如獲取10天前的日期 date d 10day y m d 二 獲取當前系統時間戳 date s 三 時間戳轉為易讀的時間...