c語言的 time 函式和 localtime 函式 (基於格林威治標準時間(gmt))
#pragma warning(disable : 4996)//disable error c4996
#include
intmain()
c++的ctime類(mfc中),其實就是對上面的封裝。(基於格林威治標準時間(gmt))
#define _afxdll#includeintmain()
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年所經歷的秒數。mfc中的 coledatetime,coledatetime類處理了從100年1月1日到2023年12月31日的日期。這個資料是以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位時間拆分成兩部分並分別儲存在兩個變數裡,這是乙個麻煩而且效率低下的選擇.
#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 將時間轉換成經過的...