C C 中的時間函式和時間類

2022-04-10 01:43:22 字數 1913 閱讀 4111

c語言的 time 函式和 localtime 函式 (基於格林威治標準時間(gmt))

#pragma warning(disable : 4996)//

disable error c4996

#include

intmain()

c++的ctime類(mfc中),其實就是對上面的封裝。(基於格林威治標準時間(gmt))

#define _afxdll#include 

intmain()

vc6.0下,在ctime中,年的範圍是1970到2038(包含2038)。距1970-1-1 12:0:0 am 也就是2的32次方秒. (當 time_t 是32位的)

在time_t 是 int64 時,ctime類表示日期上限是2023年12月31日,下限是2023年1月1日 12:00:00 am gmt。

和21世紀初的千年蟲(the millennium bug)問題類似,32位的unix作業系統和linux作業系統時間溢位問題又稱為2023年問題(the year 2038 problem)。如果你想知道什麼是2038問題的話,你需要知道一些技術上的東西。這個bug是由用來寫unix/linux的c語言引起的,c語言中用 time_t 來代表時間和日期,time_t 是整數(int)型的,它用來記載從2023年1月1日到2023年所經歷的秒數。

這個資料是以32位儲存的,第一位是符號位,其餘的31位用來存數字,而這31位數字可以儲存的最大數字為2147483647。

從2023年開始計算,這31位的數字可以表示的秒數最多可以用到2023年01月19日03時14分07秒,當時間到達這個數字的時候系統將會出現問題,到時候數字不會自動增加,而是會變為-2147483648,而這串數字代表的時間是2023年12月13日20時45分52秒,這會導致很多的程式出現問題,甚至崩潰。

2023年問題不僅比千年蟲更隱蔽,而且比之前千年蟲問題更具有破壞力,因為千年蟲問題只會導致應用層的程式出現問題,比如信用卡支付系統,或者管理系統。而2038這個bug,將會影響系統最底層的時間控制的功能。

要解決這個問題,最簡單的方式是擴充套件unix時間的長度,用64位數字來表示它。64位二進位制數的實際可用位數是63位,最大表示到公曆的utc時間292,277,026,596年12月4日15時30分08秒. 如果那個時候人類文明還存在的話,公元紀年很可能已經因為太難用而被拋棄了. 理想的情況是到2023年,64位系統已經成為主流,從而避免特意去修正這個問題所需要的大量開銷。否則,人們就必須把新的64位時間拆分成兩部分並分別儲存在兩個變數裡,這是乙個麻煩而且效率低下的選擇.

mfc中的 coledatetime,coledatetime類處理了從100年1月1日到2023年12月31日的日期。

#define _afxdll#include 

#include

intmain()

%a: 周的英文縮寫形式。

%a: 周的英文全名形式。

%b: 月的英文縮寫形式。

%b: 月的英文全名形式。

%c: 完整的日期和時間。

%d: 十進位制形式的日期(01-31)。

%h: 24小時制的小時(00-23)。

%i: 12小時制的小時(00-11)。

%j: 十進位制表示的一年中的第幾天(001-366)。

%m: 月的十進位制表示(01-12)。

%m: 十進位制表示的分鐘(00-59)。

%p: 12小時制的上下午標示(am/pm)。

%s: 十進位制表示的秒(00-59)。

%u: 一年中的第幾個星期(00-51),星期日是一周的第一天。

%w: 一年中的第幾個星期(00-51),星期一是一周的第一天。

%w: 十進位制表示的星期幾(0-6)。

%y: 十進位制表示的年。

C C 時間函式

1 time函式 標頭檔案 time.h 函式定義 time t time time t t 說明 返回從1970年1月1日的utc時間從0時0分0妙算起到現在所經過的秒數。include include int main 輸出 1302079744 1302079744 附 time t 一路追蹤...

C C 中關於時間的函式 time

轉 2017年11月05日 11 53 16 寧靜而至遠 函式 time time t timer 1.當引數為null時 大多數情況下 返回值是從1970年1月1日至今所經歷的時間 以秒為單位 見下面的 cpp view plain copy include include include int...

C C 時間函式總結

c語言的時間函式 標頭檔案 time.h 相關函式和介面 asctime 將時間日期以字串格式表示 ctime 將時間日期以字串格式表示 gettimeofday 獲取當前時間 gmtime 獲取當前時間和日期 localtime 獲取當前時間和日期並轉換為本地時間 mktime 將時間轉換成經過的...