71 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
id: l29u
 | 
						|
tags:
 | 
						|
  - unix
 | 
						|
  - time
 | 
						|
created: Sunday, April 28, 2024
 | 
						|
---
 | 
						|
 | 
						|
# Time and computers
 | 
						|
 | 
						|
## Epochs and Unix Time
 | 
						|
 | 
						|
An epoch is a period of time identified by a starting point.
 | 
						|
 | 
						|
The standard epoch for measuring against is known colloqially as "Unix Time":
 | 
						|
midnight on 1st January 1970. Unix time is the number of seconds that have
 | 
						|
elapsed since this point. This is the standard for Windows and most unix
 | 
						|
systems.
 | 
						|
 | 
						|
For example midnight on 2nd January 1970 would be 86400 seconds since the epoch.
 | 
						|
The deduction is as follows:
 | 
						|
 | 
						|
```
 | 
						|
60 * 60 * 24 = 86400
 | 
						|
```
 | 
						|
 | 
						|
We are multiplpying the number of seconds in a minute by the number of minutes
 | 
						|
in an hour by the number of hours in a day.
 | 
						|
 | 
						|
To represent times and dates before 1970, we use negative integers.
 | 
						|
 | 
						|
## UTC and time zones
 | 
						|
 | 
						|
"Coordinated Universal Time" (UTC) is the time standard against which the
 | 
						|
world's timekeeping is synchronized. It is not itself a timezone, it is a
 | 
						|
transcendent standard that defines what time zones are.
 | 
						|
 | 
						|
Time zones are defined relative to UTC, by their offset to this value.
 | 
						|
 | 
						|
For example North America is behind UTC by five or six hours hence uses the
 | 
						|
notation UTC-5:00 or UTC-6:00.
 | 
						|
 | 
						|
UTC is the successor to GMT of which there were variances necessitating a
 | 
						|
universal value. Despite this GMT is equal to UTC+00:00 so apart from when
 | 
						|
daylight saving is in effect in the UK, GMT = UTC.
 | 
						|
 | 
						|
Depending on your locale, relative to UTC, you will get different outputs when
 | 
						|
you attempt to log Unix Time.
 | 
						|
 | 
						|
Also daylight savings can impact on the outputs. For instance for half of the
 | 
						|
year, when DST applies, the UK is UTC+01:00.
 | 
						|
 | 
						|
## Examples in Python
 | 
						|
 | 
						|
The following gives us the unix seconds in my current time zone (GMT DST):
 | 
						|
 | 
						|
```py
 | 
						|
import time
 | 
						|
print(time.time())
 | 
						|
# 1714322393.2929392
 | 
						|
```
 | 
						|
 | 
						|
If I want UTC, I can do:
 | 
						|
 | 
						|
```py
 | 
						|
import datetime
 | 
						|
print(datetime.datetime.utcnow().strftime('%s'))
 | 
						|
# '1714318952'
 | 
						|
```
 | 
						|
 | 
						|
We see clearly that they are not identical.
 |