C C 時間相關用法

2021-07-29 10:51:55 字數 2419 閱讀 2658

基本時間函式:

1.名字:time_t time(time_t *t)

說明:返回格林尼治時間從公元 1970 年1 月1 日的utc 時間從0 時0 分0 秒算起到現在所經過的秒數,函式為value - result型

引數:time_t為長整型,即long型,所以最大能儲存到2023年1月18日19時14分07秒

時間常用用法:

1.1獲取當前時間戳(精確到秒)

示例:

int ncurtime = time(null);

1.2獲取從2023年1月1日算起至今經過的天數(從1開始,以北京時間的日期為天數標準,達到0時0分0秒即為新的一天)

示例:

// 一天的總秒數

int daysecond = 24 * 60 * 60;

// 現在的時間戳,精確到秒

int curtime = time(null);

// 得到天數,為什麼要減去16個小時呢,請參照上面,北京的0時是格林尼治時間的16時

// 所以只有減去了16小時的秒數,才是格林尼治時間的一天的0時0分0秒,當然此種計算只適用於以北京時間為標準的

int curday = (curtime - 16 * 60 * 60) / daysecond;

1.3有了以前的時間戳(精確到秒),計算現在是時間戳計算以來的第幾天(從1開始,處於同一天則為1,以北京時間的日期為天數標準,達到0時0分0秒即為新的一天)

示例:

// 一天的總秒數

int daysecond = 24 * 60 * 60;

// 上次的時間戳,暫取北京時間2023年3月1日0時0分0秒

int nlasttime = 1488297600;

// 上次時間戳所處的天數,減16小時秒數的原因同上

int nlastday = (nlasttime - 16* 60*60) / daysecond ;

// 當前時間戳所處的天數,減16小時秒數的原因同上

int ncurday = (time(null) - 16 * 60 * 60)/ daysecond;

// 間隔,加1表當天為第一天

int nintervalday= ncurday - nlastday + 1;

2. 時間結構體 tm 和 time_t的轉換

結構體tm的定義:

struct tm 

;

time_t的定義:即32位整型或64位整型

#ifndef _time_t_defined

#ifdef _use_32bit_time_t

typedef __time32_t time_t; /* time value */

#else

typedef __time64_t time_t; /* time value */

#endif

2.1 tm轉換為time_t

time_t mktime(struct tm * _tm);
示例**:

tm* tm1		= new tm();

tm1->tm_year = 118; // 2023年

tm1->tm_mon = 3; // 4月

tm1->tm_mday = 14; // 14日

tm1->tm_hour = 10; // 10點

tm1->tm_min = 58; // 58分

tm1->tm_sec = 9; // 9秒

2.2 time_t轉換為tm

tm * localtime(const time_t * _time);

示例**:

// 獲取當前時間

time_t ti = time(null);

//轉換成tm型別的結構體;

PHP時間相關常用函式用法示例

設定時區 date default timezone set asia shanghai 獲取時區 echo date default timezone get 結果 utc echo 新增時間 date date create 2013 03 15 建立乙個datetime 物件 date add...

C C 相關題解

1.求下面函式的返回值 微軟 按 ctrl c 複製 按 ctrl c 複製 假定x 9999。答案 8 思路 將x轉化為2進製,看含有的1的個數。2.什麼是 引用 申明和使用 引用 要注意哪些問題?答 引用就是某個目標變數的 別名 alias 對應用的操作與對變數直接操作效果完全相同。申明乙個引用...

c c 獲取時間

方法一 time t time time t timer 可以獲取當前的系統時間,此函式返回的是從公元1970年1月1日0時0分0秒算起到現在所經過的秒數 如果引數不是空指標的話,它也會把返回值設定到入參指標所指物件中 在標頭檔案中,有 typedef long time t,所以time t其實就...