Linux獲取本地時間

2021-10-11 07:30:23 字數 3151 閱讀 2116

參考鏈結

linux核心中表示時間的結構體和資料型別有5種, 具體其宣告的標頭檔案在:#include#include

extern

void

do_gettimeofday

(struct timeval *tv)

;//gettimeofday函式執行成功後返回0,失敗後返回-1,錯誤**存於errno中。

extern

intgettimeofday

(struct timeval *__restrict __tv, __timezone_ptr_t __tz)

;結構,最小時間單位為微秒(1e-6s)

struct timeval

;

extern

void

getnstimeofday

(struct timespec *tv)

;結構,最小時間單位為納秒(1e-9s)

struct timespec

;

struct timezone 

;

struct tm

;

//time_t該型別被定義在include/linux/types.h中,它是乙個長整型,用來表示2023年以來的秒數。

typedef __kernel_time_t time_t;

函式原型

//把從1970.1.1零點零分到當前時間系統所偏移的秒數時間轉換為本地時間

struct tm *

localtime

(const time_t *clock)

;

//把從1970.1.1零點零分到當前時間系統所偏移的秒數時間轉換為格林威治(gmt)時間

//即位於英國倫敦郊區的皇家格林尼治天文台的標準時間

//!注意:不會經過時區變換

struct tm *

gmtime

(const time_t *time)

;

//string 轉 struct tm

char

*strptime

(const

char*,

const

char*,

struct tm *

);

//struct tm 轉string

size_t strftime

(char

*strdest,size_t maxsize,

const

char

*format,

const

struct tm *timeptr)

;

strptime與strftime格式化引數說明

函式strftime()的操作有些類似於 sprintf():識別以 百分號(%)開始的格式命令集合,格式化輸出結果放在乙個字串中。格式化命令說明串strdest中各種日期和時間資訊的確切表示方法。格式串中的其他字元原樣放進串中。格式命令列在下面,它們是區分大小寫的。

%a 星期幾的簡寫

%a 星期幾的全稱

%b 月分的簡寫

%b 月份的全稱

%c 標準的日期的時間串

%c 年份的後兩位數字

%d 十進位制表示的每月的第幾天

%d 月/天/年

%e 在兩字元域中,十進位制表示的每月的第幾天

%f 年-月-日

%g 年份的後兩位數字,使用基於周的年

%g 年分,使用基於周的年

%h 簡寫的月份名

%h 24小時制的小時

%i 12小時制的小時

%j 十進位制表示的每年的第幾天

%m 十進位制表示的月份

%m 十時制表示的分鐘數

%n 新行符

%p 本地的am或pm的等價顯示

%r 12小時的時間

%r 顯示小時和分鐘: hh:mm

%s 十進位制的秒數

%t 水平 製表符

%t 顯示時分秒:hh:mm: ss

%u 每週的第幾天,星期一為 第一天 (值從0到6,星期一為0)

%u 第年的第幾周,把星期日做為第一天(值從0到53)

%v 每年的第幾周,使用基於周的年

%w 十進位制表示的星期幾(值從0到6,星期天為0)

%w 每年的第幾周,把星期一做為第一天(值從0到53)

%x 標準的日期串

%x 標準的時間串

%y 不帶世紀的十進位制年份(值從0到99)

%y 帶世紀部分的十制年份

%z,%z 時區名稱,如果不能得到時區名稱則返回空字元。

%% 百分號

示例

//獲取當前精確時間(2023年1月1日到現在的時間)

struct timeval _tv;if(

-1==gettimeofday

(&_tv,

null))

//微秒精度會被丟棄

struct tm *now =

localtime

(&_tv.tv_sec)

;//struct tm 轉字串 "2020-12-03 00:36:38"

std::string strformat =

"now : %y-%m-%d %h:%m:%s"

;char chout[

100]=;

strftime

(chout,

100,strformat.

c_str()

, now )

;//字串轉struct tm

std::string strtmep=

"now : 2020-12-03 00:36:38"

;struct tm test;

strptime

(strtmep.

c_str()

, strformat.

c_str()

,&test)

;

獲取本地時間

獲取本地時間戳 int gettimestamp timeval tm gettimeofday tm,null return tm.tv sec 單位 秒 return tm.tv usec 單位 毫秒 獲取本地時間 time t t time null tm lt localtime t int...

獲取本地時間

獲取本地時間 struct tm tm time t timep if cc target platform cc platform win32 else localtime 功能 把從1970 1 1零點零分到當前時間系統所偏移的秒數時間轉換為日曆時間。說明 此函式獲得的tm結構體的時間,是已經進...

objectiveC獲取本地時間。

nsdate date nscalendardate date nslog date 日曆在ios裡報錯,nsdateformatter formatter nsdateformatteralloc init formatter setdateformat yyyy mm dd hh mm ss n...