c++获取时间戳_时间简史
生活随笔
收集整理的這篇文章主要介紹了
c++获取时间戳_时间简史
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
好吧,我承認這篇文章有點標題黨,本文內容與霍金同學同名書無任何相關,而是一篇不折不扣的關于時間和計算機程序的“時間簡史”。時間是什么?數(shù)學家說時間是第四維度,不過顯然計算機不這么看, 在計算機的世界里,硬件層面看,時間就是RTC時鐘和計時器、計數(shù)器、晶振等。而從軟件層面看,時間就是一個數(shù)據(jù)結構,用來存放能表達時間的內容,當然還有一些相應的讀寫函數(shù)。
顯然,TIMESTAMP對應的就是32位平臺C語言的time_t,而我們儲備數(shù)據(jù)還是盡可能選用DATETIME吧,畢竟2038年也不是那么遙遠的事情。
匯編時代
和現(xiàn)在的高級編程語言不同,匯編語言基本沒有工業(yè)級的函數(shù)庫,然而匯編程序也絕非任何功能都要一字一句敲打出來,遠古時代的匯編語言大都依賴系統(tǒng)調用的方式進行輸入輸出的處理,包括BIOS調用、DOS調用、linux系統(tǒng)調用等,實現(xiàn)諸如獲取輸入,在屏幕上顯示字符,顯示圖形等功能。記得當年一代碼神求伯君領著小弟雷軍還寫過一本《深入DOS編程》就是講DOS系統(tǒng)調用的,諸君有興趣不妨一觀。言歸正傳,匯編時代下時間如何獲取和表示呢,我們以DOS系統(tǒng)為例,使用int21號系統(tǒng)調用,功能碼0x2a獲取系統(tǒng)日期,0x2C獲取系統(tǒng)時間,數(shù)據(jù)結構沒有現(xiàn)成的,只能自己定義了。系統(tǒng)調用之后的結果通常存放在寄存器中,再從寄存器mov到自己的數(shù)據(jù)字段中即可。Basic時代
Basic算是一門中古世紀的語言,內置相關函數(shù),訪問日期用DATE$,訪問時間用TIME$,相當簡單和方便。C時代
從C時代開始,我們的時間小朋友終于不再裸奔了,穿上了兩件小衣服。一件是小背心time_t,這是一個整數(shù),代表從1970年1月1日0時開始的秒數(shù)。還有件看起來不錯的外套tm結構體,里面設立了年月日時分秒夏令時等字段)。此外還提供了不少庫函數(shù)幫我們完成時間獲取、時間格式化的工作。| 數(shù)據(jù)結構/函數(shù) | what |
| - time_t | 從1970年1月1日00:00:00開始的秒數(shù) |
| - tm | 多元素結構體 |
| - time() | 獲取當前秒數(shù) |
| - asctime() | "Wed Jun 30 21:49:08 1993” |
| - ctime() | "Wed Jun 30 21:49:08 1993” |
| - gmtime() | 得到UTC時間 |
| - localtime() | 得到當?shù)貢r間 |
| - mktime() | (contrast to gmtime) |
Mysql數(shù)據(jù)庫
這個時候,數(shù)據(jù)庫作為一方諸侯也邀請時間小朋友入住了,以著名的mysql為例,為時間主要準備了以下數(shù)據(jù)類型| DATETIME(8) | 1000-01-01 00:00:00 to 9999-12-31 23:59:59 |
| TIMESTAMP(4) | 1970-01-01 00:00:00 to 2038-1-19 03:14:07 |
Cpp時代
C孤單了很久,終于有一天找了個對象,于是成了家的C親切的被大家叫做面向對象的Cpp。繼而工業(yè)級別的函數(shù)庫、模塊不斷出現(xiàn),如stl,boost等等。那么時間也多了幾個小弟像chrono、 date、 systemclock,主要實現(xiàn)來更好的跨平臺特性和時間差計算功能。Java時代
Java的庫都是以包的形式提供的,在代碼中只需要import即可,比起c系列來說確實方便不少。它提供了java.util包,里面有Date類和SimpleDateFormat類可以完成上面提到的時間獲取,時間格式化等操作,真的是蠻方便的。- Date
- SimpleDateFormat
Python時代
接下來就是當下十分火爆的python語言了,它提供了兩個模塊(package)來做和時間相關的活,一個是time,一個是datetime。time 模塊- timestamp:時間戳,從1970年1月1日00:00:00開始的秒數(shù)
- struct_time:9元素touple(年月日時分秒,wday,yday,isdst)
- strftime("%Y-%m-%d %X") 格式化時間
- strptime('2011-05-05 16:37:06', '%Y-%m-%d %X')?解析時間字符串
datetime模塊
- 包括date、time、datatime、timedelta、tzinfo
- time被限制在24小時以內
- timedelta可以方便的計算時間差
- 提供和time模塊基本相同的函數(shù)可以格式化和解析時間
以上就是關于時間和計算機的“時間簡史”,在匯編->C語言->C++->Java->Python的演化中究其本源,它其實只進化了1次,就是從32位進化到64位。目前來看,很長一段時間內它應該不會再進化了,畢竟64位的秒數(shù)表示夠我們用到天荒地老了。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的c++获取时间戳_时间简史的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Express 入门之Router -
- 下一篇: 51单片机中断检测回复http://ww