Vad är klockan? Hur våra system visar, beräknar, formaterar och synkroniserar datum och tider
Det låter som en enkel fråga, men du skulle bli förvånad över hur komplex infrastrukturen ger dig en exakt tid. När dina användare finns över tidszoner eller till och med reser över tidszoner medan de använder dina system, finns det en förväntning om att allt fungerar sömlöst.
Men det är inte enkelt.
Exempel: Du har en anställd i Phoenix som behöver schemalägga ett e-postmeddelande till 8:00 på måndag för sitt företag i Los Angeles. Phoenix anpassar sig inte för sommartid; Los Angeles gör det. Och hur är det med mottagarna? Ska de få e-postmeddelandet klockan 8:00 på måndagen i sin respektive tidszon? Eller kommer prenumeranter i New York att få sin e-post klockan 11:00 EST på måndag?
Hur tiden visas på din dator
- Operativ system (OS) – Ditt operativsystem slår upp tiden från sin realtidsklocka (RTC). Den justerar formatet på datumet för din plats och tiden för din lämpliga tidszon, vanligtvis bestäms av platsen för din enhet.
- Datumformat – Det finns flera vanliga datumformat, inklusive:
- Det gregorianska kalenderdatumet (ÅÅÅÅ-MM-DD), t.ex. 2022-02-08
- USA:s stildatum (MM/DD/ÅÅÅÅ), t.ex. 02-08-2022
- Europeisk stildatum (DD/MM/ÅÅÅÅ), t.ex. 08-02-2022
- Tidszoner – Det finns 24 tidszoner i världen, var och en med ungefär 15 graders longitud från varandra. Tidszoner delar in världen i regioner med samma standardtid så att människor i varje tidszon kan ha en gemensam tid för sina dagliga aktiviteter.
- Sommartid – I regioner med sommartid ställs klockorna framåt en timme på våren och en timme tillbaka på hösten. Detta resulterar i en extra timmes dagsljus på kvällarna under sommarmånaderna, men det innebär också att solen går upp och går ner en timme tidigare på morgonen respektive kvällen under vintermånaderna.
- Datumformat – Det finns flera vanliga datumformat, inklusive:
- Real-Time Clock (RTC) – din dator håller tiden, även när den är avstängd, med hjälp av ett chip som kallas RTC. När den inte är strömförsörjd håller ett litet litiumbatteri chipet tickande (ordlek) och kan driva det i upp till ett decennium utan laddning.
- Network Time Protocol (NTP) – när operativsystem har en etablerad anslutning till internet använder de NTP för att synkronisera sina klockor med en pool av tidsservrar, inklusive de som tillhandahålls av Network Time Protocol. Som standard synkroniserar Windows med NTP-servrar en gång var 7:e dag, medan macOS synkroniserar en gång i timmen. NTP:er underhåller sin tid med koordinerad universell tid (UTC). När en klient begär den aktuella tiden från en NTP-server, svarar servern med ett 64-bitars värde som representerar antalet sekunder sedan 1 januari 1900, klockan 00:00:00 UTC.
- Koordinerad universell tid (UTC) – en standardiserad tid som används som grund för all tidtagning i världen. Den är baserad på International Atomic Time (TAI), som mäter den genomsnittliga tid som förflutit mellan två specifika punkter i jordens månbanor. UTC implementerades först 1972 som en efterföljare till TAI och Greenwich Mean Time (GMT). UTC hålls inom 0.9 sekunder från TAI-tidsskalan, och dess noggrannhet bibehålls genom användning av atomur och annan tidtagningsteknik.
- De 24 UTC-tidszonerna är indelade i offset kategorier där varje offset är justeringen för lämplig tid i timmar: UTC-12, UTC-11, UTC-10, UTC-9, UTC-8, UTC-7, UTC-6, UTC-5, UTC-4, UTC-3, UTC-2, UTC-1, UTC, UTC+1, UTC+2, UTC+3, UTC+4, UTC+5, UTC+6, UTC+7, UTC+8, UTC+9, UTC+10 och UTC+11.
- Internationell atomtid (TAI) – en tidsstandard som baseras på den genomsnittliga tiden som förflutit mellan två specifika punkter i jordens månbanor. TAI är en av de mest exakta och stabila tidsskalorna som finns tillgängliga, och den underhålls av International Bureau of Weights and Measures.
- Atomklockor – är mycket exakta tidtagare som använder atomernas naturliga vibrationer för att mäta tid. Den vanligaste typen av atomur är cesium atomur, som använder vibrationer av cesium atomer för att hålla tiden. Noggrannheten hos en atomklocka upprätthålls av stabiliteten hos frekvensen av den elektromagnetiska strålningen som emitteras av cesiumatomerna. Denna frekvens är så stabil att den bara ändras med en bråkdel av en sekund under tusentals år. Frekvensen på den elektromagnetiska strålningen jämförs sedan med en kvartsoscillator, som används för att styra en räknare. Räknaren räknar antalet cykler av elektromagnetisk strålning, och denna räkning används för att beräkna tiden. Räknaren korrigeras hela tiden för att säkerställa att den förblir synkroniserad med vibrationerna från cesiumatomerna.
Moderna system registrerar ofta tider som Unix-tidsstämplar. En Unix-tidsstämpel är en numerisk representation av en specifik tidpunkt, mätt som antalet sekunder som har förflutit sedan 1 januari 1970, klockan 00:00:00 UTC. Unix-tidsstämplar används ofta i datorsystem eftersom de är enkla att arbeta med och enkelt kan jämföras, sorteras och manipuleras. De är också oberoende av tidszoner, vilket innebär att de ger en standardiserad representation av tid som kan användas över olika geografiska regioner.
Så... när du kontrollerar tiden, visar du
Arbeta med datum i PHP
Jag har skrivit förut om hur man gör visa årtalet för din upphovsrättsdeklaration programmatiskt så att du inte behöver fortsätta uppdatera den varje år. Det finns mycket mer du kan göra med datum, dock. Här är några exempel:
Visa datum som 2023-02-08:
$current_date = date("Y-m-d");
echo $current_date;
Visa datumet som en tidsstämpel 1612684800:
$timestamp = strtotime("2023-02-08");
echo $timestamp;
Visa datum och tid formaterade i UTC istället för den lokala tidszonen som 2023-02-08 15:25:00:
$utc_date = gmdate("Y-m-d H:i:s");
echo $utc_date;
Visa den aktuella Unix-tidsstämpeln som 1612742153:
$current_timestamp = time();
echo $current_timestamp;
Ställ in tidszonen som standard till Los Angeles och visa sedan datum och tid som 2023-02-08 07:25:00:
date_default_timezone_set("America/Los_Angeles");
$date = date("Y-m-d H:i:s");
echo $date;
Organisera PHP-datumformattecken i logiska grupper, med varje grupp i alfabetisk ordning och formattecknen som underpunkter:
- Dag
d
– Dag i månaden, 2 siffror med inledande nollor (01 till 31). Exempel:15
D
– En textrepresentation av en dag, tre bokstäver (mån till sol). Exempel:Thu
j
– Dag i månaden utan inledande nollor (1 till 31). Exempel:15
l
(gement "L") – En fullständig textuell representation av veckodagen (söndag till lördag). Exempel:Thursday
S
– Engelskt ordningssuffix för dagen i månaden, 2 tecken (st, nd, rd eller th). Exempel:th
w
– Numerisk representation av veckodagen (0 (för söndag) till 6 (för lördag)). Exempel:4
z
– Årets dag (från 0). Exempel på aktuellt datum kanske inte är korrekt utan exakta beräkningar.
- Månad
F
– En fullständig textuell representation av en månad (januari till december). Exempel:February
m
– Numerisk representation av en månad, med inledande nollor (01 till 12). Exempel:02
M
– En kort textpresentation av en månad, tre bokstäver (januari till december). Exempel:Feb
n
– Numerisk representation av en månad, utan inledande nollor (1 till 12). Exempel:2
t
– Antal dagar i den givna månaden (28 till 31). Exempel:28
- Vecka
W
– ISO-8601 vecka nummer för år, veckor som börjar på måndag (exempel: 42, den 42:a veckan på året). Exempel på aktuellt datum kanske inte är korrekt utan exakta beräkningar.
- År
o
– ISO-8601 veckonummerår. Detta har samma värde som Y, förutom att om ISO-veckans nummer (W) tillhör föregående eller nästa år, används det året istället. Exempel:2024
Y
– En fullständig numerisk representation av ett år, 4 siffror. Exempel:2024
y
– En tvåsiffrig representation av ett år. Exempel:24
- Tidszon
T
– Tidszonförkortning. Exempel:EST
e
– Tidszonsidentifierare. Exempel:America/New_York
P
– Skillnad till Greenwich-tid (GMT) med kolon mellan timmar och minuter. Exempel:-04:00
O
– Skillnad till Greenwich-tid (GMT) utan kolon mellan timmar och minuter. Exempel:-0400
Z
– Tidszonförskjutning i sekunder. Förskjutningen för tidszoner väster om UTC är alltid negativ, och för de öster om UTC är alltid positiv. Exempel:-14400 (for EST)
Varje språk har sina funktioner för att fungera med UTC, tidsstämplar, visningsformat, tidszoner och sommartid. Om du utvecklar en plattform kommer du att vilja ägna mycket uppmärksamhet åt hur du lagrar tidsbaserad data samt hur du formaterar och visar den. Om du är ett företag kommer du att vilja se till att dina plattformar kan hantera arbete över tidszoner, visa lämpliga format för dina användare, samt hantera justeringar av sommartid.
Så... Vad är klockan?
My operating system is formatting the date and time as Mar 18, 2024, 10:47 PM. The time has been adjusted from a Unix Timestamp to my time zone, adjusted for Daylight Savings Time. That time has been synchronized in the last hour from MacOS with an NTP server that is in UTC and adjusted to keep within 0.9 seconds with TAI and the atomic clocks. All of this, of course, is an accurate time provided for my location with respect to the Earth, Moon, and Sun… adjusted for Daylight Savings Time.