Kiek dabar valandų? Kaip mūsų sistemos rodo, skaičiuoja, formatuoja ir sinchronizuoja datas ir laiką
Tai skamba kaip paprastas klausimas, tačiau nustebsite, kokia sudėtinga infrastruktūra suteikia jums tikslų laiką. Kai naudotojai gyvena įvairiose laiko juostose arba net keliauja per laiko juostas, kai naudojasi jūsų sistemomis, tikimasi, kad viskas veiks sklandžiai.
Bet tai nėra paprasta.
Pavyzdys: turite darbuotoją Phoenix, kuris turi suplanuoti el. laišką pirmadienį 8:00 savo įmonei Los Andžele. „Phoenix“ nesiderina prie vasaros laiko; Los Andželas tai daro. O kaip su gavėjais? Ar jie turėtų gauti el. laišką pirmadienį 8 val. pagal atitinkamą laiko juostą? Arba prenumeratoriai Niujorke gaus el. laišką pirmadienį 00:11 EST?
Kaip laikas rodomas jūsų kompiuteryje
- Operacinė sistema (OS) – Jūsų operacinė sistema ieško laiko pagal savo realaus laiko laikrodį (RTC). Jis koreguoja jūsų lokalės datos formatą ir atitinkamos laiko juostos laiką, kurį paprastai nustato jūsų įrenginio vieta.
- Datos formatai – Yra keli įprasti datos formatai, įskaitant:
- Grigaliaus kalendoriaus data (MMMM-MM-DD), pvz., 2022-02-08
- Jungtinių Valstijų stiliaus data (MM/DD/MMMM), pvz., 02-08-2022
- Europietiško stiliaus data (DD/MM/MMMM), pvz., 08-02-2022
- Laiko juostos – Pasaulyje yra 24 laiko juostos, kurių kiekviena yra maždaug 15 laipsnių ilgumos atstumu. Laiko juostos padalija pasaulį į regionus su tuo pačiu standartiniu laiku, kad kiekvienoje laiko juostoje esantys žmonės galėtų turėti bendrą laiką kasdienei veiklai.
- Vasaros laikas – Regionuose, kuriuose laikomasi vasaros laiko, pavasarį laikrodžiai pasukami viena valanda į priekį, o rudenį – viena valanda atgal. Dėl to vasaros mėnesiais vakarais gaunama papildoma valanda dienos šviesos, tačiau tai taip pat reiškia, kad žiemos mėnesiais saulė atitinkamai pakyla ir leidžiasi valanda anksčiau rytais ir vakarais.
- Datos formatai – Yra keli įprasti datos formatai, įskaitant:
- Laikrodis realiuoju laiku (RTC) – jūsų kompiuteris palaiko laiką, net kai jis išjungtas, naudodamas lustą, žinomą kaip RTC. Kai jis nėra maitinamas, maža ličio baterija palaiko lustą (skirta kalambūrai) ir gali maitinti iki dešimties metų be įkrovimo.
- Tinklo laiko protokolas (NTP) – kai operacinės sistemos turi ryšį su internetu, jos naudoja NTP, kad sinchronizuotų savo laikrodžius su laiko serveriais, įskaitant tuos, kuriuos teikia Tinklo laiko protokolas. Pagal numatytuosius nustatymus „Windows“ sinchronizuojasi su NTP serveriais kartą per 7 dienas, o „macOS“ – kartą per valandą. NTP palaiko savo laiką naudodamiesi suderintu visuotiniu laiku (UTC). Kai klientas užklausa dabartinio laiko iš NTP serverio, serveris atsako su 64 bitų reikšme, atitinkančia sekundžių skaičių nuo 1 m. sausio 1900 d., 00:00:00 UTC.
- Koordinuotas Universalus Laikas (UTC) – standartizuotas laikas, naudojamas kaip viso pasaulio laiko apskaitos pagrindas. Jis pagrįstas tarptautiniu atominiu laiku (TAI), kuris matuoja vidutinį laiką, praėjusį tarp dviejų konkrečių Žemės Mėnulio orbitų taškų. UTC pirmą kartą buvo įdiegtas 1972 m. kaip TAI ir Grinvičo laiko įpėdinis (GMT). UTC išlaikomas per 0.9 sekundės nuo TAI laiko skalės, o jo tikslumas palaikomas naudojant atominius laikrodžius ir kitas laiko matavimo technologijas.
- 24 UTC laiko juostos yra suskirstytos į kompensuoti kategorijos, kuriose kiekvienas poslinkis yra atitinkamo laiko koregavimas valandomis: 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 ir UTC+11.
- Tarptautinis atominis laikas (TAI) – laiko standartas, pagrįstas vidutiniu laiku tarp dviejų konkrečių Žemės Mėnulio orbitų taškų. TAI yra viena tiksliausių ir stabiliausių laiko skalių, kurią palaiko Tarptautinis svorių ir matų biuras.
- Atominiai laikrodžiai – yra labai tikslūs laikmačiai, kurie laiko matavimui naudoja natūralias atomų vibracijas. Labiausiai paplitęs atominio laikrodžio tipas yra cezio atominis laikrodis, kuris naudoja cezio atomų vibracijas, kad išlaikytų laiką. Atominio laikrodžio tikslumą palaiko cezio atomų skleidžiamos elektromagnetinės spinduliuotės dažnio stabilumas. Šis dažnis yra toks stabilus, kad per tūkstančius metų keičiasi tik sekundės dalimi. Tada elektromagnetinės spinduliuotės dažnis lyginamas su kvarciniu osciliatoriumi, kuris naudojamas skaitikliui valdyti. Skaitiklis skaičiuoja elektromagnetinės spinduliuotės ciklų skaičių ir šis skaičius naudojamas laikui apskaičiuoti. Skaitiklis nuolat koreguojamas, siekiant užtikrinti, kad jis išliktų sinchronizuotas su cezio atomų vibracijomis.
Šiuolaikinės sistemos dažnai įrašo laiką kaip Unix laiko žymas. „Unix“ laiko žyma yra skaitinis konkretaus laiko momento atvaizdas, matuojamas kaip sekundžių skaičius, praėjęs nuo 1 m. sausio 1970 d., 00:00:00 UTC. „Unix“ laiko žymos plačiai naudojamos kompiuterinėse sistemose, nes su jomis paprasta dirbti ir jas galima lengvai palyginti, rūšiuoti ir manipuliuoti. Jie taip pat nepriklauso nuo laiko juostų, o tai reiškia, kad jie pateikia standartizuotą laiko vaizdą, kurį galima naudoti skirtinguose geografiniuose regionuose.
Taigi... kai tikrinate laiką, rodote
Darbas su datomis PHP
Jau rašiau apie tai, kaip programiškai rodyti autorių teisių deklaracijos metus kad nereikėtų jos kasmet atnaujinti. Tačiau yra daug daugiau, ką galite padaryti su datomis. Štai keletas pavyzdžių:
Rodyti datą kaip 2023-02-08:
$current_date = date("Y-m-d");
echo $current_date;
Rodyti datą kaip laiko žymą 1612684800:
$timestamp = strtotime("2023-02-08");
echo $timestamp;
Rodyti datą ir laiką, suformatuotą UTC, o ne vietinę laiko juostą kaip 2023-02-08 15:25:00:
$utc_date = gmdate("Y-m-d H:i:s");
echo $utc_date;
Rodyti esamą Unix laiko žymą kaip 1612742153:
$current_timestamp = time();
echo $current_timestamp;
Numatytąją laiko juostą nustatykite į Los Andželą ir tada rodykite datą ir laiką kaip 2023-02-08 07:25:00:
date_default_timezone_set("America/Los_Angeles");
$date = date("Y-m-d H:i:s");
echo $date;
PHP datos formato simbolių suskirstymas į logines grupes, kiekviena grupė yra abėcėlės tvarka, o formato simboliai – subženkleliais:
- Diena
d
– Mėnesio diena, 2 skaitmenys su nuliais priekyje (nuo 01 iki 31). Pavyzdys:15
D
– Tekstinis dienos vaizdavimas, trys raidės (pirmadienis – saulė). Pavyzdys:Thu
j
– Mėnesio diena be nulių priekyje (nuo 1 iki 31). Pavyzdys:15
l
(mažosios raidės „L“) – visas savaitės dienos tekstas (nuo sekmadienio iki šeštadienio). Pavyzdys:Thursday
S
– Mėnesio dienos angliška eilės priesaga, 2 simboliai (st, nd, rd arba th). Pavyzdys:th
w
– Savaitės dienos skaitinis pavaizdavimas (0 (sekmadienį) iki 6 (šeštadienį)). Pavyzdys:4
z
– Metų diena (pradedant nuo 0). Dabartinės datos pavyzdys gali būti netikslus be tikslių skaičiavimų.
- Mėnuo
F
– Visas mėnesio (nuo sausio iki gruodžio) tekstinis vaizdas. Pavyzdys:February
m
– Skaitinis mėnesio vaizdas su nuliais priekyje (01–12). Pavyzdys:02
M
– Trumpas tekstinis mėnesio vaizdas, trys raidės (nuo sausio iki gruodžio). Pavyzdys:Feb
n
– Skaitinis mėnesio vaizdavimas be nulių priekyje (nuo 1 iki 12). Pavyzdys:2
t
– Dienų skaičius per nurodytą mėnesį (nuo 28 iki 31). Pavyzdys:28
- savaitė
W
– ISO-8601 savaitės metų skaičius, savaitės nuo pirmadienio (pavyzdys: 42, 42-oji metų savaitė). Dabartinės datos pavyzdys gali būti netikslus be tikslių skaičiavimų.
- metai
o
– ISO-8601 savaitės numeracijos metai. Ši vertė yra tokia pati kaip Y, išskyrus tai, kad jei ISO savaitės numeris (W) priklauso ankstesniems arba kitiems metams, vietoj to naudojami tie metai. Pavyzdys:2024
Y
– Pilnas skaitinis metų atvaizdavimas, 4 skaitmenys. Pavyzdys:2024
y
– Metų dviženklis vaizdas. Pavyzdys:24
- Laiko zona
T
– Laiko juostos santrumpa. Pavyzdys:EST
e
– Laiko juostos identifikatorius. Pavyzdys:America/New_York
P
– Skirtumas nuo Grinvičo laiko (GMT) su dvitaškiu tarp valandų ir minučių. Pavyzdys:-04:00
O
– Skirtumas nuo Grinvičo laiko (GMT) be dvitaškio tarp valandų ir minučių. Pavyzdys:-0400
Z
– Laiko juostos poslinkis sekundėmis. Laiko juostų į vakarus nuo UTC poslinkis visada yra neigiamas, o į rytus nuo UTC - visada teigiamas. Pavyzdys:-14400 (for EST)
Kiekviena kalba turi savo funkcijas, skirtas dirbti su UTC, laiko žymomis, rodymo formatais, laiko juostomis ir vasaros laiku. Jei kuriate platformą, norėsite daug dėmesio skirti tam, kaip saugote laiko duomenis, taip pat kaip juos formatuojate ir rodote. Jei esate verslas, norėsite užtikrinti, kad jūsų platformos galėtų valdyti darbą įvairiose laiko juostose, rodyti naudotojams tinkamus formatus, taip pat tvarkyti vasaros laiko reguliavimą.
Taigi... Kiek dabar laikas?
Mano operacinė sistema formatuoja datą ir laiką kaip 18 m. kovo 2024 d., 10:47. Laikas buvo pakoreguotas iš Unix laiko žymos į mano laiko juostą, pritaikytą vasaros laikui. Šis laikas buvo sinchronizuotas per paskutinę valandą iš „MacOS“ su NTP serveriu, kuris veikia UTC, ir pakoreguotas taip, kad būtų išlaikytas 0.9 sekundės naudojant TAI ir atominius laikrodžius. Visa tai, žinoma, yra tikslus mano buvimo vietos laikas Žemės, Mėnulio ir Saulės atžvilgiu... pakoreguotas pagal vasaros laiką.