系統時間

Unix日期命令

計算機科學電腦編程系統時間代表計算機系統關於時間流逝的概念。在這個意義上,時間還包括通過日曆上的天數.

系統時間由系統時鐘,通常將其實現為簡單的數量tick自任意起始日期以來已轉移的情況,稱為時代。例如,Unixposix - 集合系統編碼系統時間(”Unix時間”)自從開始以來的秒數Unix時期1970年1月1日00:00:00UT,例外跳躍秒。實施32位和64位版本的系統Windows API, 如Windows 9xWindows NT,提供系統時間系統時間,表示為年/月/每天/小時/分鐘/秒/毫秒的值,並且filtime,自1601年1月1日以來,表示是100納秒滴答的數量流傳性格里高利日曆.

系統時間可以轉換為日曆時間,這是一種更適合人類理解的形式。例如,UNIX系統時間1000000000自時代開始以來的幾秒鐘轉化為日曆時間2001年9月9日01:46:40 UT。圖書館子例程處理這樣的轉換也可能處理調整時區夏令時節省時間(DST),跳躍秒,以及用戶的語言環境設置。通常還提供將日曆時間轉換為系統時間的庫例程。

其他時間測量

與系統時間密切相關的是過程時間,這是總數中央處理器執行時消耗的時間過程。它可以分為用戶系統CPU時間,表示執行用戶代碼和系統所花費的時間核心代碼分別。過程時間是CPU的計數指示或者時鐘週期通常與牆時間.

文件系統跟踪通過存儲創建,修改和/或訪問的文件的時間時間戳在裡面文件控制塊(或者inode) 每個文件目錄.

歷史

大多數第一代個人計算機沒有跟踪日期和時間。這些包括運行的系統CP/m操作系統以及早期模型蘋果二世, 這BBC微型,和準將寵物,其他。添加在外圍板其中包括實時時鐘帶有船上的芯片備用電池可用於IBM PCXT,但是IBM在是第一台廣泛可用的PC,配備了日期/時間硬件內置的PC母板。在廣泛可用之前計算機網絡,大多數確實跟踪系統時間的個人計算機系統僅針對當地時間才能做到這一點,並且沒有為不同的津貼時區.

有了當前的技術,大多數現代計算機都會跟踪當地的民用時代,許多其他家庭和個人設備(例如VCRDVR有線電視接收器PDA打印機手機傳真機電話接聽機相機攝像頭中央空調, 和微波爐.

微控制器在內部運行嵌入式系統(如那個覆盆子皮Arduino, 和別的類似的系統)並不總是具有內部硬件來跟踪時間。許多這樣的控制器系統在不了解外部時間的情況下運行。那些需要此類信息的人通常會初始化其基本時間重新啟動通過從外部來源獲得當前時間,例如時間服務器或外時鐘,或提示用戶手動輸入當前時間。

執行

系統時鐘通常將其實現為可編程間隔計時器這會定期中斷CPU,然後開始執行計時器中斷程序例程。此例程通常會在系統時鐘(一個簡單的計數器)中添加一個刻度,並處理其他定期的管家任務(先發製人等等))在返回任務之前,CPU在中斷之前正在執行。

檢索系統時間

2022年12月30日17:37:31 UTC

最後生成此頁面時的Wikipedia系統時間。
清除此頁面,然後更新此計數器。

以下表說明了在各種中檢索系統時間的方法操作系統編程語言, 和申請。(*)標記的值是系統依賴性的,並且在實現之間可能有所不同。所有日期均為格里高利人或者流傳性格里高利日曆日期。

請注意解析度實現時間的測量並不意味著相同精確這樣的測量。例如,系統可能會返回當前時間作為在微秒中測量的值,但實際上能夠以僅100 Hz(10 ms)的頻率辨別單個時鐘滴答。

操作系統

操作系統命令或功能解析度時代或範圍
安卓java.lang.System.CurrentTimeMillis()1 ms1970年1月1日
BIOSIBM PCint 1AH,ah = 00h[1]54.9254 MS
18.2065 Hz
當今午夜
int 1AH,ah = 02H[2]1 s當今午夜
int 1AH,ah = 04h[3]1天1980年1月1日至1999年12月31日或2079年12月31日(系統依賴)
CP/M Plus系統控制塊:[4]
SCB $ base+58h,自1977年12月31日以來的日子
SCB $ base+5AH,小時(BCD)
SCB $ base+5bh,分鐘(BCD)
SCB $ base+5ch,第二(BCD)
1 s1977年12月31日至2157年6月5日
BDOS函數69H>((t_get):[5]
單詞,自1978年1月1日以來的日子
字節,小時(BCD)
字節,分鐘(BCD)
字節,第二(BCD)
dos微軟C:\> datec:\>時間10毫秒1980年1月1日至2099年12月31日
int 21h,ah = 2ch系統時間[6]
int 21h,ah = 2AH系統日期[7]
ios蘋果CFABSOLUTETIMETCURRENT()[8]< 1 ms2001年1月1日±10,000年
蘋果系統CFABSOLUTETIMETCURRENT()[9]< 1 ms[10][注1]2001年1月1日±10,000年[10][注1]
OpenVMSsys $ gettim()100 ns[11]1858年11月17日到086年7月31日[12]
getTimeofday()1μs[13]1970年1月1日至2106年2月7日[14]
clock_getTime()1NS[13]
Z/OSstck[15]:7–1872-12μs
244.14 ps[15]:4-45、4-46
1900年1月1日至2042年9月17日UT[16]
stcke1900年1月1日至AD 36,765[17]
Unixposix
(也可以看看C日期和時間功能
$日期
時間()
1 s(*)
1970年1月1日(到2038年1月19日在Linux 5.9)之前至2486年7月2日(由於Linux 5.10)
1970年1月1日至12月4日公元292,277,026,596
getTimeofday()1μs
clock_getTime()1 ns
OS/2dosgetDateTime()10毫秒1980年1月1日至2079年12月31日[18]
視窗getSystemTime()1 ms1601年1月1日至30828年9月14日,02:48:05.47775807
getSystemTimeasFiletime()100 ns
getSystemTime preciseasfiletime()

編程語言和應用程序

語言/應用功能或變量解析度時代或範圍
艾達ada.calendar.Clock100μs到
20 ms(*)
1901年1月1日至2099年12月31日(*)
尷尬Systime()1 s(*)
基本的真正的基本日期日期$
時間時間$
1 s(*)
業務基本蒂姆0.1 s(*)
C(看C日期和時間功能時間()1 s(*)[筆記2](*)[筆記2]
C ++std :: time()
std :: chrono :: system_clock :: now()
1 s(*)[筆記2]
1 NS(C ++ 11,OS依賴性)
(*)[筆記2]
C#system.dateTime.now[19]
system.dateTime.utcnow[20]
100 ns[21]1月1日至9999年12月31日
CICS詢問時間1 ms1900年1月1日
COBOL功能電流日期1 s1601年1月1日
常見的LISP(慶祝活動)1 s1900年1月1日
德爾菲Borland日期
時間
1 ms
(浮點)
1900年1月1日
德爾菲
Embarcadero技術[22]
System.Sysutils.Time[23]1 ms0/0/0000 0:0:0:0:000至12/31/9999 23:59:59:999 [SIC]
System.Sysutils.getTime[24](別名System.Sysutils.Time
System.Sysutils.date[25]0/0/0000 0:0:0:0:000至12/31/9999 0:0:0:000 [SIC]
system.dateutils.today[26]
system.dateutils.tomorrow[27]
system.dateutils.yesterday[28]
System.Sysutils.now[29]1 s0/0/0000 0:0:0:0:000至12/31/9999 23:59:59:000 [SIC]
System.Sysutils.dayofweek[30]1天1到7
System.Sysutils.currentyear[31]1年(*)
emacs lisp(當前時間)1μs(*)1970年1月1日
Erlangerlang:system_time()OS:System_time()[32]操作系統依賴,例如上Linux1NS[32]1970年1月1日[32]
Excel日期()1月0日1900[33]
Fortran日期和時間
System_Clock
(*)[34]

[35]

1970年1月1日
cpu_time1μs
是時候了()1 ns1月1日10001
哈斯克爾time.getClockTime1 ps(*)1970年1月1日(*)
data.time.getCurrentTime1 ps(*)1858年11月17日(*)
爪哇java.util.date()
system.currenttimemillis()
1 ms1970年1月1日
system.nanotime()[36]1 ns隨意的[36]
clock.systemutc()[37]1 ns隨意的[38]
JavaScript打字稿(new Date())。getTime()
date.now()
1 ms1970年1月1日
MATLAB現在1 s1月0日0000[39]
腮腺炎$ h短缺$ HOROLOG1 s1840年12月31日
LabView滴答計數1 ms00:00:00.000 1904年1月1日
在幾秒鐘內獲取日期/時間1 ms00:00:00.000 1904年1月1日
Objective-C[NSDATE TIMEINTERVALSINCREECTECTATE]< 1 ms[40]2001年1月1日±10,000年[40]
OCAMLunix.time()1 s1970年1月1日
unix.getTimeofday()1μs
擴展的帕斯卡爾getTimestamp()1 s(*)
渦輪增壓gettime()
getDate()
10毫秒(*)
珀爾時間()1 s1970年1月1日
時間::員工::時間[41]1μs
php時間()
mktime()
1 s1970年1月1日
Microtime()1μs
純基礎日期()1 s1970年1月1日至2038年1月19日
PythondateTime.now().Timestamp()1μs(*)1970年1月1日
RPG當前的日期)%日期
當前時間)%時間
1 s1月1日至9999年12月31日
電流(時間戳)%時間戳1μs
紅寶石是時候了()[42]1μs(*)1970年1月1日(至2038年1月19日,在Ruby 1.9.2之前[43]
短暫聊天時間微秒
(VisualWorks)
1 s(ANSI)
1μs(VisualWorks)
1 s(吱)
1901年1月1日(*)
時間量
(吱)
SystemClock ticksnowsystemclockepoch
(計時)
SQLcurdate()或者當前的日期
curtime()或者當前時間
getDate()
現在()或者當前時間戳
sysdate()
3 ms1753年1月1日至9999年12月31日(*)
60 s1900年1月1日至2079年6月6日
標準ML是時候了()1μs(*)1970年1月1日(*)
TCL[時鐘秒]1 s1970年1月1日
[時鐘毫秒]1 ms
[時鐘微秒]1μs
[時鐘點擊]1μs(*)(*)
Windows PowerShell參與日期[44][45]100 ns[21]1月1日至9999年12月31日
[datetime] ::現在[19]
[datetime] :: utcnow[20]
Visual Basic .netsystem.dateTime.now[19]
system.dateTime.utcnow[20]
100 ns[21]1月1日至9999年12月31日

也可以看看

筆記

  1. ^一個bApple開發人員文檔尚不清楚CFABSOLUTETIME/CFTIMEINTERVAL的精度和範圍,除非在Cfrunlooptimercreate文檔中,該文檔最多指“最多”精度。但是,類似類型Nstimeinterval似乎可以互換,並具有列出的精度和範圍。
  2. ^一個bcdC標準庫未指定任何特定分辨率,時期,範圍或數據類型系統時間值。C ++庫包含C庫,因此它使用與C相同的系統時間實現。

參考

  1. ^Ralf D. Brown(2000)。“ int 0x1a,ah = 0x00”.拉爾夫·布朗(Ralf Brown)的中斷名單.
  2. ^Ralf D. Brown(2000)。“ int 0x1a,ah = 0x02”.拉爾夫·布朗(Ralf Brown)的中斷名單.
  3. ^Ralf D. Brown(2000)。“ int 0x1a,ah = 0x04”.拉爾夫·布朗(Ralf Brown)的中斷名單.
  4. ^“ CP/M Plus(CP/M版本3.0)操作系統指南”(PDF).
  5. ^“ BDOS系統調用”.
  6. ^Ralf D. Brown(2000)。“ int 0x21,ah = 0x2c”.拉爾夫·布朗(Ralf Brown)的中斷名單.
  7. ^Ralf D. Brown(2000)。“ int 0x21,ah = 0x2a”.拉爾夫·布朗(Ralf Brown)的中斷名單.
  8. ^“時間公用事業參考”.iOS開發人員庫。 2007。
  9. ^“時間公用事業參考”.Mac OS X開發人員庫。 2007。
  10. ^一個b“時間公用事業 - 基金會”.蘋果開發人員文檔。檢索7月6日2022.
  11. ^露絲·E·戈德伯格;勞倫斯·凱納(Lawrence J. Kenah);Denise E. Dumas(1991)。VAX/VMS內部和數據結構,版本5.2。數字出版社。ISBN 978-1555580599.
  12. ^“為什麼1858年11月17日(星期三)是OpenVM(VAX VM)的基本時間?”.斯坦福大學。 1997年7月24日。存檔從1997年7月24日的原始。檢索1月8日2020.
  13. ^一個b“ vsi c運行時間庫參考手冊,用於OpenVMS系統”(PDF)。 VSI。 2020年11月。檢索2021-04-17.
  14. ^“ OpenVMS和2038年”。生命值。檢索2021-04-17.
  15. ^一個bZ/架構操作原理(PDF)。波基普西,紐約:國際商務機器。2007。
  16. ^IBM打算將未來系統的日期範圍擴展到2042年。Z/架構操作原理,(Poughkeepsie,紐約:國際商務機器,2007年)1-15,4-45至4-47。
  17. ^“擴展的64位時間值”。 IBM。檢索2021-04-18.
  18. ^喬納森·德·博恩·波拉德(Jonathan de Boyne Pollard)。“ 32位命令解釋器”.在OS/2 Warp 4上,日期和時間都可以遠遠超過2000年,甚至超過2038年,實際上直到2079年,這是OS/2 Warp 4的實時時鐘的限制。
  19. ^一個bc“ dateTime.now屬性”.微軟文檔.
  20. ^一個bc“ dateTime.utcnow屬性”.微軟文檔.
  21. ^一個bc“ dateTime.ticks屬性”.微軟文檔.
  22. ^“日期和時間支持”.Embarcadero開發人員網絡。 2013。
  23. ^“ System.Sysutils.time”.Embarcadero開發人員網絡。 2013。
  24. ^“ System.Sysutils.getTime”.Embarcadero開發人員網絡。 2013。
  25. ^“ system.sysutils.date”.Embarcadero開發人員網絡'。 2013。
  26. ^“ system.dateutils.today”.Embarcadero開發人員網絡。 2013。
  27. ^“ system.dateutils.tomorrow”.Embarcadero開發人員網絡。 2013。
  28. ^“ system.dateutils.yesterday”.Embarcadero開發人員網絡。 2013。
  29. ^“ system.sysutils.s.現在”.Embarcadero開發人員網絡。 2013。
  30. ^“ system.sysutils.dayofweek”.Embarcadero開發人員網絡。 2013。
  31. ^“ System.Sysutils.currentyear”.Embarcadero開發人員網絡。 2013。
  32. ^一個bc“ Erlang的時間和時間校正”.www.erlang.org.
  33. ^“ XL2000:辦公室電子表格組件上的早期日期不同於Excel”.微軟支持。 2003年原本的2007年10月24日。在Microsoft Offick電子表格組件中,值0評估到1899年12月30日的日期,值1評估至1899年12月31日。...在Excel中,值0評估到1900年1月0日,值1評估為1900年1月1日。
  34. ^“ System_Clock”.Intel Fortran編譯器19.0開發人員指南和參考。 2019年4月29日。檢索7月23日2019.
  35. ^“ System_Clock - 時間函數”.GNU Fortran編譯器。檢索10月27日2011.
  36. ^一個b“ system.nanotime()方法”.Java平台,標準版6:API規範。 2015。檢索7月23日2019.
  37. ^“ clock.systemutc()和其他方法”.Java平台,標準版8:API規範。 2014。檢索1月15日2015.
  38. ^“ JSR-310 Java時間系統”.Java平台,標準版8:API規範。 2014。檢索1月15日2015.
  39. ^“ MATLAB幫助”.
  40. ^一個b“ Nstimeinterval -Foundation”.蘋果開發人員文檔.
  41. ^道格拉斯·韋格斯(Douglas Wegscheild),R。Schertler和Jarkko Hietaniemi,“時間::僱用”.CPAN-綜合perl檔案網絡。 2011。檢索10月27日2011.
  42. ^詹姆斯·布里特(James Britt); Neurogami。“時間課”.Ruby-doc.org:Ruby編程語言的幫助和文檔。亞利桑那州斯科茨代爾。檢索10月27日2011.
  43. ^Yugui(2010年8月18日)。“ Ruby 1.9.2已釋放”.新的1.9.2幾乎與1.9.1兼容,除了這些更改:...時間已重新完成。2038年的錯誤是固定的。
  44. ^“使用get-witth cmdlet”.微軟文檔。檢索7月23日2019.
  45. ^“ Windows Powershell本週的尖端 - 格式化日期和時間”.微軟文檔。檢索7月23日2019.

外部鏈接