Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
System time
Representation of time used in computers

In computer science and computer programming, system time represents a computer system's notion of the passage of time. In this sense, time also includes the passing of days on the calendar.

System time is measured by a system clock, which is typically implemented as a simple count of the number of ticks that have transpired since some arbitrary starting date, called the epoch. For example, Unix and POSIX-compliant systems encode system time ("Unix time") as the number of seconds elapsed since the start of the Unix epoch at 1 January 1970 00:00:00 UT, with exceptions for leap seconds. Systems that implement the 32-bit and 64-bit versions of the Windows API, such as Windows 9x and Windows NT, provide the system time as both SYSTEMTIME, represented as a year/month/day/hour/minute/second/milliseconds value, and FILETIME, represented as a count of the number of 100-nanosecond ticks since 1 January 1601 00:00:00 UT as reckoned in the proleptic Gregorian calendar.

System time can be converted into calendar time, which is a form more suitable for human comprehension. For example, the Unix system time 1000000000 seconds since the beginning of the epoch translates into the calendar time 9 September 2001 01:46:40 UT. Library subroutines that handle such conversions may also deal with adjustments for time zones, daylight saving time (DST), leap seconds, and the user's locale settings. Library routines are also generally provided that convert calendar times into system times.

Many implementations that currently store system times as 32-bit integer values will suffer from the impending Year 2038 problem. These time values will overflow ("run out of bits") after the end of their system time epoch, leading to software and hardware errors. These systems will require some form of remediation, similar to efforts required to solve the earlier Year 2000 problem. This will also be a potentially much larger problem for existing data file formats that contain system timestamps stored as 32-bit values.

We don't have any images related to System time yet.
We don't have any YouTube videos related to System time yet.
We don't have any PDF documents related to System time yet.
We don't have any Books related to System time yet.
We don't have any archived web articles related to System time yet.

Other time measurements

Closely related to system time is process time, which is a count of the total CPU time consumed by an executing process. It may be split into user and system CPU time, representing the time spent executing user code and system kernel code, respectively. Process times are a tally of CPU instructions or clock cycles and generally have no direct correlation to wall time.

File systems keep track of the times that files are created, modified, and/or accessed by storing timestamps in the file control block (or inode) of each file and directory.

History

Most first-generation personal computers did not keep track of dates and times. These included systems that ran the CP/M operating system, as well as early models of the Apple II, the BBC Micro, and the Commodore PET, among others. Add-on peripheral boards that included real-time clock chips with on-board battery back-up were available for the IBM PC and XT, but the IBM AT was the first widely available PC that came equipped with date/time hardware built into the motherboard. Prior to the widespread availability of computer networks, most personal computer systems that did track system time did so only with respect to local time and did not make allowances for different time zones.

With current technology, most modern computers keep track of local civil time, as do many other household and personal devices such as VCRs, DVRs, cable TV receivers, PDAs, pagers, cell phones, fax machines, telephone answering machines, cameras, camcorders, central air conditioners, and microwave ovens.

Microcontrollers operating within embedded systems (such as the Raspberry Pi, Arduino, and other similar systems) do not always have internal hardware to keep track of time. Many such controller systems operate without knowledge of the external time. Those that require such information typically initialize their base time upon rebooting by obtaining the current time from an external source, such as from a time server or external clock, or by prompting the user to manually enter the current time.

Implementation

The system clock is typically implemented as a programmable interval timer that periodically interrupts the CPU, which then starts executing a timer interrupt service routine. This routine typically adds one tick to the system clock (a simple counter) and handles other periodic housekeeping tasks (preemption, etc.) before returning to the task the CPU was executing before the interruption.

Retrieving system time

The following tables illustrate methods for retrieving the system time in various operating systems, programming languages, and applications. Values marked by (*) are system-dependent and may differ across implementations. All dates are given as Gregorian or proleptic Gregorian calendar dates.

The resolution of an implementation's measurement of time does not imply the same precision of such measurements. For example, a system might return the current time as a value measured in microseconds, but actually be capable of discerning individual clock ticks with a frequency of only 100 Hz (10 ms).

Operating systems

Operating systemCommand or functionResolutionEpoch or range
Androidjava.lang.System.currentTimeMillis()1 ms1 January 1970
BIOS (IBM PC)INT 1Ah, AH=00h154.9254 ms 18.2065 HzMidnight of the current day
INT 1Ah, AH=02h21 sMidnight of the current day
INT 1Ah, AH=04h31 day1 January 1980 to 31 December 1999 or 31 December 2079 (system dependent)
CP/M PlusSystem Control Block:4 scb$base+58h, Days since 31 December 1977 scb$base+5Ah, Hour (BCD) scb$base+5Bh, Minute (BCD) scb$base+5Ch, Second (BCD)1 s31 December 1977 to 5 June 2157
BDOS function 69h> (T_GET):5 word, Days since 1 January 1978 byte, Hour (BCD) byte, Minute (BCD) byte, Second (BCD)
DOS (Microsoft)C:\> DATEC:\> TIME10 ms1 January 1980 to 31 December 2099
INT 21h, AH=2Ch SYSTEM TIME6INT 21h, AH=2Ah SYSTEM DATE7
iOS (Apple)CFAbsoluteTimeGetCurrent()8< 1 ms1 January 2001 ±10,000 years
macOSCFAbsoluteTimeGetCurrent()9< 1 ms10111 January 2001 ±10,000 years1213
OpenVMSSYS$GETTIM()100 ns1417 November 1858 to 31 July 31,08615
gettimeofday()1 μs161 January 1970 to 7 February 210617
clock_gettime()1 ns18
z/OSSTCK19: 7–187 2−12 μs 244.14 ps20: 4–45, 4–46 1 January 1900 to 17 September 2042 UT21
STCKE1 January 1900 to AD 36,76522
Unix, POSIX (see also C date and time functions)$datetime()1 s(*) 1 January 1970 (to 19 January 2038 prior to Linux 5.9) to 2 July 2486 (Since Linux 5.10)1 January 1970 to 4 December AD 292,277,026,596
gettimeofday()1 μs
clock_gettime()1 ns
OS/2DosGetDateTime()10 ms1 January 1980 to 31 December 207923
WindowsGetSystemTime()1 ms1 January 1601 to 14 September 30828, 02:48:05.4775807
GetSystemTimeAsFileTime()100 ns
GetSystemTimePreciseAsFileTime()

Programming languages and applications

Language/ApplicationFunction or variableResolutionEpoch or range
AdaAda.Calendar.Clock100 μs to 20 ms (*)1 January 1901 to 31 December 2099 (*)
AWKsystime()1 s(*)
BASIC, True BASICDATE, DATE$ TIME, TIME$1 s(*)
Business BASICDAY, TIM0.1 s(*)
C (see C date and time functions)time()1 s (*)24(*)25
C++std::time() std::chrono::system_clock::now()1 s (*)261 ns (C++11, OS dependent)(*)27
C#System.DateTime.Now28 System.DateTime.UtcNow29100 ns301 January 0001 to 31 December 9999
CICSASKTIME1 ms1 January 1900
COBOLFUNCTION CURRENT-DATE1 s1 January 1601
Common Lisp(get-universal-time)1 s1 January 1900
Delphi (Borland)datetime1 ms (floating point)1 January 1900
Delphi (Embarcadero Technologies)31System.SysUtils.Time321 ms0/0/0000 0:0:0:000 to12/31/9999 23:59:59:999 [sic]
System.SysUtils.GetTime33 (alias for System.SysUtils.Time)
System.SysUtils.Date340/0/0000 0:0:0:000 to12/31/9999 0:0:0:000 [sic]
System.DateUtils.Today35
System.DateUtils.Tomorrow36
System.DateUtils.Yesterday37
System.SysUtils.Now381 s0/0/0000 0:0:0:000 to12/31/9999 23:59:59:000 [sic]
System.SysUtils.DayOfWeek391 day1 to 7
System.SysUtils.CurrentYear401 year(*)
Emacs Lisp(current-time)1 μs (*)1 January 1970
Erlangerlang:system_time(), os:system_time()41OS dependent, e.g. on Linux 1ns421 January 197043
Exceldate()?0 January 190044
FortranDATE_AND_TIME SYSTEM_CLOCK(*)45

46

1 January 1970
CPU_TIME1 μs
Gotime.Now()1 ns1 January 0001
HaskellTime.getClockTime1 ps (*)1 January 1970 (*)
Data.Time.getCurrentTime1 ps (*)17 November 1858 (*)
Javajava.util.Date()System.currentTimeMillis()1 ms1 January 1970
System.nanoTime()471 nsarbitrary48
Clock.systemUTC()491 nsarbitrary50
JavaScript, TypeScript(new Date()).getTime() Date.now()1 ms1 January 1970
Matlabnow1 s0 January 000051
MUMPS$H (short for $HOROLOG)1 s31 December 1840
LabVIEWTick Count1 ms00:00:00.000 1 January 1904
Get Date/Time in Seconds1 ms00:00:00.000 1 January 1904
Objective-C[NSDate timeIntervalSinceReferenceDate]< 1 ms521 January 2001 ±10,000 Years53
OCamlUnix.time()1 s1 January 1970
Unix.gettimeofday()1 μs
Extended PascalGetTimeStamp()1 s(*)
Turbo PascalGetTime() GetDate()10 ms(*)
Perltime()1 s1 January 1970
Time::HiRes::time541 μs
PHPtime()mktime()1 s1 January 1970
microtime()1 μs
PureBasicDate()1 s1 January 1970 to 19 January 2038
Pythondatetime.now().timestamp()1 μs (*)1 January 1970
RPGCURRENT(DATE), %DATE CURRENT(TIME), %TIME1 s1 January 0001 to 31 December 9999
CURRENT(TIMESTAMP), %TIMESTAMP1 μs
RubyTime.now()551 μs (*)1 January 1970(to 19 January 2038 prior to Ruby 1.9.256)
Scheme(get-universal-time)571 s1 January 1900
SmalltalkTime microsecondClock (VisualWorks)1 s (ANSI) 1 μs (VisualWorks) 1 s (Squeak)1 January 1901 (*)
Time totalSeconds (Squeak)
SystemClock ticksNowSinceSystemClockEpoch (Chronos)
SQLCURDATE() or CURRENT DATE CURTIME() or CURRENT TIME GETDATE() or GETUTCDATE() NOW() or CURRENT TIMESTAMP SYSDATE()3 ms1 January 1753 to 31 December 9999 (*)
60 s1 January 1900 to 6 June 2079
Standard MLTime.now()1 μs (*)1 January 1970 (*)
TCL[clock seconds]1 s1 January 1970
[clock milliseconds]1 ms
[clock microseconds]1 μs
[clock clicks]1 μs (*)(*)
Windows PowerShellGet-Date5859100 ns601 January 0001 to 31 December 9999
[DateTime]::Now61 [DateTime]::UtcNow62
Visual Basic .NETSystem.DateTime.Now63 System.DateTime.UtcNow64100 ns651 January 0001 to 31 December 9999

See also

Notes

References

  1. Ralf D. Brown (2000). "Int 0x1A, AH=0x00". Ralf Brown's Interrupt List. /wiki/Ralf_D._Brown

  2. Ralf D. Brown (2000). "Int 0x1A, AH=0x02". Ralf Brown's Interrupt List. /wiki/Ralf_D._Brown

  3. Ralf D. Brown (2000). "Int 0x1A, AH=0x04". Ralf Brown's Interrupt List. /wiki/Ralf_D._Brown

  4. "CP/M Plus (CP/M Version 3.0) Operating System Guide" (PDF). http://www.cpm.z80.de/manuals/cpm3-sys.pdf

  5. "BDOS system calls". http://www.seasip.info/Cpm/bdos.html#105

  6. Ralf D. Brown (2000). "Int 0x21, AH=0x2c". Ralf Brown's Interrupt List. /wiki/Ralf_D._Brown

  7. Ralf D. Brown (2000). "Int 0x21, AH=0x2a". Ralf Brown's Interrupt List. /wiki/Ralf_D._Brown

  8. "Time Utilities Reference". iOS Developer Library. 2007. https://developer.apple.com/library/ios/documentation/CoreFoundation/Reference/CFTimeUtils/Reference/reference.html#//apple_ref/doc/c_ref/CFAbsoluteTimeGetCurrent

  9. "Time Utilities Reference". Mac OS X Developer Library. 2007. https://developer.apple.com/mac/library/documentation/CoreFoundation/Reference/CFTimeUtils/Reference/reference.html

  10. "Time Utilities - Foundation". Apple Developer Documentation. Retrieved 6 July 2022. https://developer.apple.com/documentation/corefoundation/time_utilities

  11. The Apple Developer Documentation is not clear on the precision & range of CFAbsoluteTime/CFTimeInterval, except in the CFRunLoopTimerCreate documentation which refers to 'sub-millisecond at most' precision. However, the similar type NSTimeInterval appears to be interchangeable, and has the precision and range listed. https://developer.apple.com/documentation/foundation/nstimeinterval

  12. "Time Utilities - Foundation". Apple Developer Documentation. Retrieved 6 July 2022. https://developer.apple.com/documentation/corefoundation/time_utilities

  13. The Apple Developer Documentation is not clear on the precision & range of CFAbsoluteTime/CFTimeInterval, except in the CFRunLoopTimerCreate documentation which refers to 'sub-millisecond at most' precision. However, the similar type NSTimeInterval appears to be interchangeable, and has the precision and range listed. https://developer.apple.com/documentation/foundation/nstimeinterval

  14. Ruth E. Goldenberg; Lawrence J. Kenah; Denise E. Dumas (1991). VAX/VMS Internals and Data Structures, Version 5.2. Digital Press. ISBN 978-1555580599. 978-1555580599

  15. "Why is Wednesday, November 17, 1858 the base time for OpenVMS (VAX VMS)?". Stanford University. 24 July 1997. Archived from the original on 24 July 1997. Retrieved 8 January 2020. https://www.slac.stanford.edu/~rkj/crazytime.txt

  16. "VSI C Run-Time Library Reference Manual for OpenVMS Systems" (PDF). VSI. November 2020. Retrieved 2021-04-17. https://vmssoftware.com/docs/VSI_CRTL_REF.pdf

  17. "OpenVMS and the year 2038". HP. Retrieved 2021-04-17. https://www.zx.net.nz/mirror/h71000.www7.hp.com/2038.html

  18. "VSI C Run-Time Library Reference Manual for OpenVMS Systems" (PDF). VSI. November 2020. Retrieved 2021-04-17. https://vmssoftware.com/docs/VSI_CRTL_REF.pdf

  19. z/Architecture Principles of Operation (PDF). Poughkeepsie, New York: International Business Machines. 2007. http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/download/A2278325.pdf?DT=20070807125005&XKS=DZ9ZBK07

  20. z/Architecture Principles of Operation (PDF). Poughkeepsie, New York: International Business Machines. 2007. http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/download/A2278325.pdf?DT=20070807125005&XKS=DZ9ZBK07

  21. IBM intends to extend the date range on future systems beyond 2042. z/Architecture Principles of Operation, (Poughkeepsie, New York:International Business Machines, 2007) 1-15, 4-45 to 4-47. http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/download/A2278325.pdf?DT=20070807125005&XKS=DZ9ZBK07

  22. "Expanded 64-bit time values". IBM. Retrieved 2021-04-18. https://www.ibm.com/docs/en/zos/2.4.0?topic=addressing-expanded-64-bit-time-values

  23. Jonathan de Boyne Pollard. "The 32-bit Command Interpreter". On OS/2 Warp 4, date and time can both operate well beyond the year 2000, and even well beyond the year 2038, and in fact up to the year 2079, which is the limit for OS/2 Warp 4's real-time clock. https://jdebp.eu/Softwares/cmd.html

  24. The C standard library does not specify any specific resolution, epoch, range, or datatype for system time values. The C++ library encompasses the C library, so it uses the same system time implementation as C. /wiki/C_standard_library

  25. The C standard library does not specify any specific resolution, epoch, range, or datatype for system time values. The C++ library encompasses the C library, so it uses the same system time implementation as C. /wiki/C_standard_library

  26. The C standard library does not specify any specific resolution, epoch, range, or datatype for system time values. The C++ library encompasses the C library, so it uses the same system time implementation as C. /wiki/C_standard_library

  27. The C standard library does not specify any specific resolution, epoch, range, or datatype for system time values. The C++ library encompasses the C library, so it uses the same system time implementation as C. /wiki/C_standard_library

  28. "DateTime.Now Property". Microsoft Docs. https://docs.microsoft.com/en-us/dotnet/api/system.datetime.now

  29. "DateTime.UtcNow Property". Microsoft Docs. https://docs.microsoft.com/en-us/dotnet/api/system.datetime.utcnow

  30. "DateTime.Ticks Property". Microsoft Docs. https://docs.microsoft.com/en-us/dotnet/api/system.datetime.ticks

  31. "Date and Time Support". Embarcadero Developer Network. 2013. http://docwiki.embarcadero.com/RADStudio/XE4/en/Date_and_Time_Support

  32. "System.SysUtils.Time". Embarcadero Developer Network. 2013. http://docwiki.embarcadero.com/Libraries/XE4/en/System.SysUtils.Time

  33. "System.SysUtils.GetTime". Embarcadero Developer Network. 2013. http://docwiki.embarcadero.com/Libraries/XE4/en/System.SysUtils.GetTime

  34. "System.SysUtils.Date". Embarcadero Developer Network'. 2013. http://docwiki.embarcadero.com/Libraries/XE4/en/System.SysUtils.Date

  35. "System.DateUtils.Today". Embarcadero Developer Network. 2013. http://docwiki.embarcadero.com/Libraries/XE4/en/System.DateUtils.Today

  36. "System.DateUtils.Tomorrow". Embarcadero Developer Network. 2013. http://docwiki.embarcadero.com/Libraries/XE4/en/System.DateUtils.Tomorrow

  37. "System.DateUtils.Yesterday". Embarcadero Developer Network. 2013. http://docwiki.embarcadero.com/Libraries/XE4/en/System.DateUtils.Yesterday

  38. "System.SysUtils.Now". Embarcadero Developer Network. 2013. http://docwiki.embarcadero.com/Libraries/XE4/en/System.SysUtils.Now

  39. "System.SysUtils.DayOfWeek". Embarcadero Developer Network. 2013. http://docwiki.embarcadero.com/Libraries/XE4/en/System.SysUtils.DayOfWeek

  40. "System.SysUtils.CurrentYear". Embarcadero Developer Network. 2013. http://docwiki.embarcadero.com/Libraries/XE4/en/System.SysUtils.CurrentYear

  41. "Time and Time Correction in Erlang". www.erlang.org. https://www.erlang.org/doc/apps/erts/time_correction.html

  42. "Time and Time Correction in Erlang". www.erlang.org. https://www.erlang.org/doc/apps/erts/time_correction.html

  43. "Time and Time Correction in Erlang". www.erlang.org. https://www.erlang.org/doc/apps/erts/time_correction.html

  44. "XL2000: Early Dates on Office Spreadsheet Component Differ from Excel". Microsoft Support. 2003. Archived from the original on 24 October 2007. In the Microsoft Office Spreadsheet Component, the value 0 evaluates to the date December 30, 1899 and the value 1 evaluates to December 31, 1899. ... In Excel, the value 0 evaluates to January 0, 1900 and the value 1 evaluates to January 1, 1900. https://web.archive.org/web/20071024010448/http://support.microsoft.com/kb/205719

  45. "SYSTEM_CLOCK". Intel Fortran Compiler 19.0 Developer Guide and Reference. 29 April 2019. Retrieved 23 July 2019. https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-system-clock

  46. "SYSTEM_CLOCK — Time function". The GNU Fortran Compiler. Retrieved 27 October 2011. https://gcc.gnu.org/onlinedocs/gfortran/SYSTEM_005fCLOCK.html

  47. "System.nanoTime() method". Java Platform, Standard Edition 6: API Specification. 2015. Retrieved 23 July 2019. https://docs.oracle.com/javase/6/docs/api/java/lang/System.html#nanoTime()

  48. "System.nanoTime() method". Java Platform, Standard Edition 6: API Specification. 2015. Retrieved 23 July 2019. https://docs.oracle.com/javase/6/docs/api/java/lang/System.html#nanoTime()

  49. "Clock.systemUTC() and other methods". Java Platform, Standard Edition 8: API Specification. 2014. Retrieved 15 January 2015. https://docs.oracle.com/javase/8/docs/api/java/time/Clock.html#systemUTC--

  50. "JSR-310 Java Time System". Java Platform, Standard Edition 8: API Specification. 2014. Retrieved 15 January 2015. https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html

  51. "Matlab Help". http://www.mathworks.com/help/matlab/ref/datenum.html

  52. "NSTimeInterval - Foundation". Apple Developer Documentation. https://developer.apple.com/documentation/foundation/nstimeinterval

  53. "NSTimeInterval - Foundation". Apple Developer Documentation. https://developer.apple.com/documentation/foundation/nstimeinterval

  54. Douglas Wegscheild, R. Schertler, and Jarkko Hietaniemi, "Time::HiRes". CPAN - Comprehensive Perl Archive Network. 2011. Retrieved 27 October 2011. https://metacpan.org/module/Time::HiRes

  55. "Time class". https://docs.ruby-lang.org/en/master/Time.html

  56. Yugui (18 August 2010). "Ruby 1.9.2 is released". The new 1.9.2 is almost compatible with 1.9.1, except these changes: ... Time is reimplemented. The bug with year 2038 is fixed. https://www.ruby-lang.org/en/news/2010/08/18/ruby-1-9-2-released/

  57. "MIT/GNU Scheme 9.2: 15.5 Date and Time". https://edoras.sdsu.edu/doc/mit-scheme-9.2/mit-scheme-ref/Date-and-Time.html

  58. "Using the Get-Date Cmdlet". Microsoft Docs. 22 October 2009. Retrieved 23 July 2019. https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-powershell-1.0/ee176845(v=technet.10)

  59. "Windows PowerShell Tip of the Week – Formatting Dates and Times". Microsoft Docs. 26 May 2010. Retrieved 23 July 2019. https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-powershell-1.0/ee692801(v=technet.10)

  60. "DateTime.Ticks Property". Microsoft Docs. https://docs.microsoft.com/en-us/dotnet/api/system.datetime.ticks

  61. "DateTime.Now Property". Microsoft Docs. https://docs.microsoft.com/en-us/dotnet/api/system.datetime.now

  62. "DateTime.UtcNow Property". Microsoft Docs. https://docs.microsoft.com/en-us/dotnet/api/system.datetime.utcnow

  63. "DateTime.Now Property". Microsoft Docs. https://docs.microsoft.com/en-us/dotnet/api/system.datetime.now

  64. "DateTime.UtcNow Property". Microsoft Docs. https://docs.microsoft.com/en-us/dotnet/api/system.datetime.utcnow

  65. "DateTime.Ticks Property". Microsoft Docs. https://docs.microsoft.com/en-us/dotnet/api/system.datetime.ticks