Scroll to navigation

zic(8) Administrarea sistemului Linux zic(8)

NUME

zic - compilator de fusuri orare

SINOPSIS

zic [ opțiune ... ] [ nume-fișier ... ]

DESCRIERE

Programul zic citește textul din fișierul (fișierele) numit(e) în linia de comandă și creează fișierele de informații privind conversia timpului specificate în această intrare. Dacă un nume-fișier este “-”, intrarea standard este citit.

OPȚIUNI

Afișează informațiile despre versiune și iese.
Afișează un scurt mesaj de utilizare și iese.
Produce date de compatibilitate cu versiunile anterioare, astfel cum este specificat de bloat. Dacă bloat este fat, generează intrări de date suplimentare care rezolvă eventualele erori sau incompatibilități din software-ul mai vechi, cum ar fi software-ul care gestionează greșit datele generate pe 64 de biți. Dacă bloat este slim, păstrează fișierele de ieșire mici; acest lucru poate ajuta la verificarea erorilor și incompatibilităților. Deși valoarea implicită este în prezent fat, se intenționează ca acest lucru să se schimbe în viitoarele versiuni zic, deoarece software-ul care gestionează greșit datele pe 64 de biți gestionează greșit oricum marcajele temporale după anul 2038. De asemenea, consultați opțiunea -r pentru o altă modalitate de a modifica dimensiunea de ieșire.
Creează fișiere de informații privind conversia timpului în directorul numit în loc de în directorul standard numit mai jos.
Utilizează fus-orar ca oră locală. zic va acționa ca și cum intrarea ar conține o linie de legătură de forma

link fus-orar localtime (ora-locală)

Citește informații despre secundele bisecte din fișierul cu numele dat. Dacă această opțiune nu este utilizată, în fișierele de ieșire nu apare nicio informație privind secundele bisecte.
Utilizează regulile fusului-orar atunci când gestionează șiruri TZ nestandardizate precum „EET-2EEST” care nu au reguli de tranziție. zic va acționa ca și cum intrarea ar conține o linie de legătură de forma

link fus-orar posixrules (reguli-posix)

Această caracteristică este învechită și insuficient implementată. Printre altele, nu ar trebui utilizată pentru marcajele de timp după anul 2037 și nu ar trebui combinată cu -b slim dacă tranzițiile fusului-orar sunt la ora standard sau la timpul universal (UT) în loc de ora locală.

Reduce dimensiunea fișierelor de ieșire prin limitarea aplicabilității lor la marcajele temporale din intervalul lo (inclusiv) la hi (exclusiv), unde lo și hi sunt numere zecimale de secunde cu semn posibil de la Epoch (1970-01-01 00:00:00 UTC). Contorizările omise au în mod implicit valori extreme. De exemplu, “zic -r @0” omite datele destinate marcajelor de timp negative (de exemplu, înainte de epocă) și “zic -r @0/@2147483648” generează date destinate numai marcajelor de timp ne-negative care se încadrează în numere întregi cu semn pe 31 de biți. Pe platformele cu GNU date, “zic -r @$(date +%s)” omite datele destinate marcajelor temporale trecute. De asemenea, consultați opțiunea -b slim pentru o altă modalitate de a micșora dimensiunea rezultatelor.
Când creează informațiile privind ora locală, plasează legătura de configurare la fișierul numit, în loc de locația standard.
Oferă mai multe detalii și semnalează următoarele situații:

Intrarea specifică o legătură către o legătură.

Un an care apare într-un fișier de date este în afara intervalului de ani reprezentabili.

O oră de 24:00 sau mai mult apare în intrare. Versiunile anterioare anului 1998 ale zic interzic ora 24:00, iar versiunile anterioare anului 2007 interzic ore mai mari de 24:00.

O regulă depășește începutul sau sfârșitul lunii. Versiunile anterioare anului 2004 ale zic interzic acest lucru.

O abreviere a fusului orar utilizează un format %z. Versiunile anterioare anului 2015 ale zic nu acceptă acest format.

Un marcaj de timp conține fracțiuni de secundă. Versiunile zic anterioare anului 2018 nu acceptă acest lucru.

Datele de intrare conțin abrevieri care sunt gestionate greșit de versiunile zic anterioare anului 2018 din cauza unei foarte vechi erori de cod. Aceste abrevieri includ “L” pentru “Link”, “mi” pentru “min”, “Sa” pentru “Sat”, și “Su” pentru “Sun”.

Fișierul de ieșire nu conține toate informațiile despre viitorul pe termen lung al unui fus orar, deoarece viitorul nu poate fi rezumat ca un șir POSIX TZ extins. De exemplu, începând cu 2019, această problemă apare pentru regulile de trecere la ora de vară ale Iranului pentru viitorul prevăzut, deoarece aceste reguli se bazează pe calendarul iranian, care nu poate fi reprezentat.

Ieșirea conține date care ar putea să nu fie gestionate corespunzător de codul clientului proiectat pentru formatele de ieșire zic mai vechi. Aceste probleme de compatibilitate afectează doar marcajele temporale de dinainte de 1970 sau de după începutul anului 2038.

Fișierul de ieșire conține mai mult de 1200 de tranziții, care pot fi gestionate greșit de unii clienți. Clientul de referință actual acceptă cel mult 2000 de tranziții; versiunile anterioare anului 2014 ale clientului de referință acceptă cel mult 1200 de tranziții.

O abreviere a fusului orar are mai puțin de 3 sau mai mult de 6 caractere. POSIX solicită cel puțin 3 caractere, iar implementările trebuie să permită cel puțin 6 caractere.

Un nume de fișier de ieșire conține un octet care nu este o literă ASCII, “-”, “/”, sau “_”; sau conține o componentă a numelui de fișier care conține mai mult de 14 octeți sau care începe cu “-”.

FIȘIERE

Fișierele de intrare utilizează formatul descris în această secțiune; fișierele de ieșire utilizează formatul tzfile(5).

Fișierele de intrare ar trebui să fie fișiere text, adică ar trebui să fie o serie de zero sau mai multe linii, fiecare terminându-se cu un octet de linie nouă și conținând cel mult 511de octeți, și fără niciun octet NUL. Codificarea textului de intrare este de obicei UTF-8 sau ASCII; ar trebui să aibă o reprezentare uni octet pentru setul de caractere portabile POSIX (PPCS) ⟨https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap06.html⟩, iar caracterele non-uni octet ale codificării ar trebui să fie compuse în întregime din octeți non-PPCS. Caracterele non-PPCS apar de obicei numai în comentarii: deși numele fișierelor de ieșire și abrevierile de fus orar pot conține aproape orice caracter, alte software-uri vor funcționa mai bine dacă acestea sunt limitate la sintaxa restricționată descrisă în opțiunea -v.

Liniile de intrare sunt formate din câmpuri. Câmpurile sunt separate între ele prin unul sau mai multe caractere de spațiu alb. Caracterele de spațiu alb sunt spațiul, saltul de pagină, returul de cărucior, linia nouă, tabulatorul și tabulatorul vertical. Spațiile albe de la începutul și de la sfârșitul liniilor de intrare sunt ignorate. Un semn hash fără ghilimele (#) în textul de intrare introduce un comentariu care se extinde până la sfârșitul liniei pe care apare semnul hash. Caracterele de spațiu alb și caracterele hash pot fi puse între ghilimele duble (") dacă urmează să fie utilizate ca parte a unui câmp. Orice linie care este goală (după eliminarea comentariului) este ignorată. Se așteaptă ca liniile care nu sunt goale să fie de unul dintre cele trei tipuri: linii de regulă, linii de zonă și linii de legătură.

Numele trebuie să fie în limba engleză și nu sunt sensibile la majuscule. Acestea apar în mai multe contexte și includ nume de luni și zile ale săptămânii și cuvinte-cheie precum maximum, only, Rolling și Zone. Un nume poate fi abreviat prin omiterea tuturor elementelor, cu excepția prefixului inițial; orice abreviere trebuie să fie lipsită de ambiguitate în context.

O linie de regulă are forma


Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S

De exemplu:

Rule	US	1967	1973	-	Apr	lastSun	2:00w	1:00d	D

Câmpurile care compun o linie de regulă sunt:
Oferă numele setului de reguli care conține această linie. Numele trebuie să înceapă cu un caracter care nu este nici o cifră ASCII, nici “-” nici “+”. Pentru a permite extensii viitoare, un nume nepus între ghilimele nu trebuie să conțină caractere din setul “!$%&'()*,/:;<=>?@[\]^`{|}~”.
Indică primul an în care se aplică regula. Poate fi furnizat orice an întreg cu semn; se presupune calendarul gregorian proleptic, anul 0 precedând anul 1. Cuvântul minimum (sau o abreviere) înseamnă trecutul indefinit. Cuvântul maximum (sau o abreviere) înseamnă viitorul indefinit. Regulile pot descrie momente care nu pot fi reprezentate ca valori temporale, timpii nereprezentabili fiind ignorați; acest lucru permite ca regulile să fie portabile între gazde cu diferite tipuri de valori de timp
Indică anul final în care se aplică regula. În plus față de minimum și maximum (ca mai sus), cuvântul only (sau o abreviere) poate fi utilizat pentru a repeta valoarea câmpului FROM.
trebuie să fie “-” și este prezent pentru compatibilitate cu versiunile mai vechi ale zic în care putea conține tipuri de ani.
Numește luna în care intră în vigoare regula. Numele lunilor pot fi abreviate.
Indică ziua la care regula intră în vigoare. Formele recunoscute includ:

5 a cincea zi a lunii lastSun ultima duminică (Sunday) din lună lastMon ultima zi de luni (Monday) din lună Sun>=8 prima duminică din ziua a opta sau după ziua a opta Sun<=25 ultima duminică din ziua a 25-a sau înainte de ziua a 25-a

Un nume de zi a săptămânii (de exemplu, Sunday) sau un nume de zi a săptămânii precedat de “last” (de exemplu, lastSunday) poate fi abreviat sau scris în întregime. În câmpul ON nu trebuie să existe caractere de spațiu alb. “<=” și “>=” pot avea ca rezultat o zi din luna vecină; de exemplu, combinația IN-ON “Oct Sun>=31” reprezintă prima duminică (Sunday) din sau după 31 octombrie, chiar dacă acea duminică (Sunday) are loc în noiembrie.

Indică ora din zi la care intră în vigoare regula, raportată la 00:00, începutul unei zile calendaristice. Formele recunoscute includ:

2 timpul în ore 2:00 timpul în ore și minute 01:28:14 timpul în ore, minute și secunde 00:19:32.13 timpul cu fracțiuni de secundă 12:00 la prânz, 12 ore după ora 00:00 15:00 3 PM, 15 ore după 00:00 24:00 sfârșitul zilei, 24 de ore după ora 00:00 260:00 260 de ore după ora 00:00 -2:30 2.5 ore înainte de ora 00:00 - echivalent cu 0

Deși zic rotunjește timpii la cea mai apropiată secundă întreagă (rupând legăturile la întreg par), fracțiile pot fi utile pentru alte aplicații care necesită o precizie mai mare. Formatul sursă nu specifică nicio precizie maximă. Oricare dintre aceste forme poate fi urmată de litera w dacă ora dată este locală sau ora “wall clock” , s dacă ora dată este ora standard fără nicio ajustare pentru ora de vară, sau u (sau g sau z) dacă ora dată este ora universală; în absența unui indicator, se presupune ora locală (ora ceasului de perete). Aceste forme ignoră secundele bisecte; de exemplu, dacă o secundă bisectă apare la 00:59:60 ora locală, “1:00” reprezintă 3601 secunde după miezul nopții locale, în loc de 3600 de secunde obișnuite. Intenția este ca o linie de reguli să descrie momentele în care un ceas/calendar fixat la tipul de timp specificat în câmpul AT ar afișa data și ora zilei specificate.

Indică cantitatea de timp care trebuie adăugată la ora locală standard atunci când regula este în vigoare și dacă ora rezultată este ora standard sau ora de vară. Acest câmp are același format ca și câmpul AT, cu excepția unui set diferit de litere sufix: s pentru ora standard și d pentru ora de vară. Litera sufix este de obicei omisă și are ca valoare implicită s dacă decalajul este zero și d în caz contrar. Sunt permise decalaje negative; în Irlanda, de exemplu, ora de vară este respectată iarna și are un decalaj negativ față de ora standard irlandeză. Decalajul este pur și simplu adăugat la ora standard; de exemplu, zic nu distinge o oră standard de 10:30 plus un SAVE de 0:30 de o oră standard de 10:00 plus un SAVE de 1:00.
Indică “variable part”
(de exemplu, “S” sau “D” din “EST” sau “EDT”) a abrevierilor de fus orar care urmează să fie utilizate atunci când această regulă este în vigoare. Dacă acest câmp este “-”, partea variabilă este nulă.

O linie de zonă are forma

Zone	NAME	STDOFF	RULES	FORMAT	[UNTIL]

De exemplu:

Zone	Asia/Amman	2:00	Jordan	EE%sT	2017 Oct 27 01:00

Câmpurile care alcătuiesc o linie de zonă sunt:
Numele fusului orar. Acesta este numele utilizat la crearea fișierului de informații privind conversia orei pentru fusul orar respectiv. Acesta nu trebuie să conțină o componentă de nume de fișier “."” sau “..”; o componentă a numelui de fișier este un subșir maxim care nu conține “/”.
Cantitatea de timp care trebuie adăugată la UT pentru a obține ora standard, fără nicio ajustare pentru ora de vară. Acest câmp are același format ca și câmpurile AT și SAVE din liniile de reguli; începeți câmpul cu un semn minus dacă ora trebuie scăzută din UT.
Numele regulilor care se aplică în fusul orar sau, alternativ, un câmp în același format ca o coloană SAVE a liniei de reguli, care indică cantitatea de timp care trebuie adăugată la efectul orei locale standard și dacă ora rezultată este ora standard sau ora de vară. Dacă acest câmp este -, atunci se aplică întotdeauna ora standard. În cazul în care se indică o cantitate de timp, contează doar suma dintre ora standard și această cantitate.
Formatul abrevierilor pentru fusul orar. Perechea de caractere %s este utilizată pentru a arăta unde se află “variable part” din abrevierea fusului orar. Alternativ, un format poate utiliza perechea de caractere %z pentru a indica decalajul UT sub forma ±hh, ±hhmm sau ±hhmmss, folosind forma cea mai scurtă care nu pierde informații, unde hh, mm și ss sunt orele, minutele și secundele la est (+) sau la vest (−) de UT. Alternativ, o bară oblică (/) separă abrevierile standard și cele de zi. Pentru a fi în conformitate cu POSIX, o abreviere a fusului orar trebuie să conțină numai caractere ASCII alfanumerice, “+” și “-”.
Ora la care se modifică compensarea UT sau regula (regulile) pentru o locație. Are forma unuia până la patru câmpuri AN [LUNĂ [ZI [[ORĂ]]]. Dacă este specificat, informațiile privind fusul orar sunt generate de la decalajul UT dat și schimbarea regulii până la ora specificată, care este interpretată folosind regulile în vigoare chiar înainte de tranziție. Luna, ziua și ora zilei au același format ca și câmpurile IN, ON și AT ale unei reguli; câmpurile din urmă pot fi omise și au ca valoare implicită cea mai recentă valoare posibilă pentru câmpurile lipsă.
Următoarea linie trebuie să fie o linie de “continuation” aceasta are aceeași formă ca o linie de zonă, cu excepția faptului că șirul “Zone” și numele sunt omise, deoarece linia de continuare va plasa informațiile începând cu momentul specificat ca “until” în linia anterioară în fișierul utilizat de linia anterioară. Liniile de continuare pot conține informații “until” , la fel ca liniile de zonă, indicând că linia următoare este o continuare.

Dacă o zonă se modifică în același moment în care o regulă ar intra în vigoare în zona sau linia de continuare anterioară, regula este ignorată. O zonă sau o linie de continuare L cu un set de reguli numit începe implicit cu ora standard: cu alte cuvinte, oricare dintre marcajele temporale ale lui L care preced prima regulă a lui L utilizează regula în vigoare după prima tranziție a lui L la ora standard. Într-o singură zonă, este o eroare dacă două reguli intră în vigoare în același moment sau dacă două schimbări de zonă intră în vigoare în același moment.

O linie de legătură are următoarea formă

Link	TARGET	LINK-NAME

De exemplu:

Link	Europe/Istanbul	Asia/Istanbul

Câmpul TARGET trebuie să apară ca și câmpul NAME într-o anumită linie de zonă. Câmpul LINK-NAME este utilizat ca nume alternativ pentru zona respectivă; are aceeași sintaxă ca și câmpul NAME al unei linii de zonă.

Cu excepția liniilor de continuare, liniile pot apărea în orice ordine la intrare. Cu toate acestea, comportamentul este nespecificat dacă mai multe linii de zonă sau de legătură definesc același nume sau dacă sursa unei linii de legătură este ținta alteia.

Fișierul care descrie secundele bisecte poate avea linii bisecte și o linie de expirare. Liniile leap (bisecte) au următoarea formă:


Leap	YEAR	MONTH	DAY	HH:MM:SS	CORR	R/S

De exemplu:

Leap	2016	Dec	31	23:59:60	+	S

Câmpurile YEAR (anul), MONTH (luna), DAY (ziua) și HH:MM:SS indică momentul în care a avut loc saltul de secundă. Câmpul CORR trebuie să fie “+” dacă a fost adăugată o secundă sau “-” dacă a fost sărită o secundă. Câmpul R/S trebuie să fie (o abreviere a) “Stationary” (staționar) în cazul în care ora secundei bisecte dată de celelalte câmpuri trebuie interpretată ca UTC sau (o abreviere a) “Rolling” (rulant) în cazul în care ora secundei bisecte dată de celelalte câmpuri trebuie interpretată ca ora locală (ceas de perete).

Linia de expirare, dacă este prezentă, are forma:


Expires	YEAR	MONTH	DAY	HH:MM:SS

De exemplu:

Expires	2020	Dec	28	00:00:00

Câmpurile YEAR, MONTH, DAY și HH:MM:SS furnizează marca temporală de expirare în UTC pentru tabelul de secunde bisecte; zic emite această marcă temporală de expirare trunchind sfârșitul fișierului de ieșire la marca temporală. Dacă nu există o linie de expirare, zic acceptă de asemenea un comentariu “#expires E ..."” unde E este marca temporală de expirare ca număr întreg zecimal de secunde de la Epoch, fără a lua în considerare secundele bisecte. Cu toate acestea, valoarea “#expires” este o caracteristică învechită, iar fișierul de secunde bisecte ar trebui să utilizeze o linie de expirare în loc să se bazeze pe un comentariu.

EXEMPLU EXTINS

Iată un exemplu extins de intrare zic, menit să ilustreze multe dintre caracteristicile sale. În acest exemplu, normele UE sunt pentru Uniunea Europeană și pentru organizația sa predecesoare, Comunitățile Europene.


# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Swiss 1941 1942 - May Mon>=1 1:00 1:00 S Rule Swiss 1941 1942 - Oct Mon>=1 2:00 0 - Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S Rule EU 1977 only - Sep lastSun 1:00u 0 - Rule EU 1978 only - Oct 1 1:00u 0 - Rule EU 1979 1995 - Sep lastSun 1:00u 0 - Rule EU 1981 max - Mar lastSun 1:00u 1:00 S Rule EU 1996 max - Oct lastSun 1:00u 0 - # Zone NAME STDOFF RULES FORMAT [UNTIL] Zone Europe/Zurich 0:34:08 - LMT 1853 Jul 16 0:29:45.50 - BMT 1894 Jun 1:00 Swiss CE%sT 1981 1:00 EU CE%sT Link Europe/Zurich Europe/Vaduz

În acest exemplu, fusul orar este numit Europe/Zurich, dar are un alias Europe/Vaduz. Acest exemplu indică faptul că Zurich se afla la 34 de minute și 8 secunde est de UT până în 1853-07-16 la 00:00, când decalajul oficial a fost schimbat la 7°26′22.50″, ceea ce înseamnă 0:29:45.50; zic tratează acest lucru rotunjindu-l la 0:29:46. După 01.06.1894, la 00:00, decalajul UT a devenit de o oră, iar regulile elvețiene de vară (definite cu linii care încep cu “Rule Swiss”) . Din 1981 până în prezent, s-au aplicat normele UE privind ora de vară, iar decalajul UTC a rămas la o oră.

În 1941 și 1942, ora de vară s-a aplicat din prima zi de luni a lunii mai la ora 01:00 până în prima zi de luni a lunii octombrie la ora 02:00. Normele UE privind ora de vară de dinainte de 1981 nu au niciun efect aici, dar sunt incluse pentru a fi complete. Din 1981, ora de vară a început în ultima duminică din martie la 01:00 UTC. Până în 1995, aceasta s-a încheiat în ultima duminică din septembrie la ora 01:00 UTC, dar s-a schimbat în ultima duminică din octombrie începând din 1996.

În scopul afișării, “LMT” și “BMT” au fost utilizate inițial, respectiv. De la aplicarea normelor elvețiene și, ulterior, a normelor UE, abrevierea fusului orar a fost CET pentru ora standard și CEST pentru ora de vară.

FIȘIERE

/etc/localtime
Fișier implicit al fusului orar local.
/usr/share/zoneinfo
Directorul implicit de informații privind fusul orar.

NOTE

Pentru zonele cu mai mult de două tipuri de oră locală, poate fi necesar să utilizați ora locală standard în câmpul AT al regulii celei mai apropiate ore de tranziție pentru a vă asigura că cea mai apropiată oră de tranziție înregistrată în fișierul compilat este corectă.

Dacă, pentru un anumit fus orar, un avans de ceas cauzat de începerea trecerii la ora de vară coincide și este egal cu un recul de ceas cauzat de o modificare a decalajului UT, zic produce o singură tranziție la ora de vară la noul decalaj UT fără nicio modificare a orei locale (orologiu). Pentru a obține tranziții separate, utilizați mai multe linii de continuare a zonei, specificând instanțele de tranziție folosind timpul universal.

CONSULTAȚI ȘI

tzfile(5), zdump(8)

TRADUCERE

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

13 august 2020