tzset(3)

NUME
tzset, tzname, timezone, daylight - inițializează informațiile de conversie a orei

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#include <time.h>

void tzset(void);

extern char *tzname[2];
extern long timezone;
extern int daylight;

    Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

tzset():
    _POSIX_C_SOURCE

tzname:
    _POSIX_C_SOURCE

timezone, daylight:
    _XOPEN_SOURCE
        || /* glibc >= 2.19: */ _DEFAULT_SOURCE
        || /* glibc <= 2.19: */ _SVID_SOURCE

DESCRIERE
Funcția tzset() inițializează variabila tzname din variabila de mediu TZ. Această funcție este apelată automat de către celelalte funcții de conversie a orei care depind de fusul orar. Într-un mediu de tip System-V, aceasta va defini, de asemenea, variabilele timezone (secunde la vest de UTC) și daylight (la 0 dacă în acest fus orar nu există reguli privind ora de vară sau la valoarea diferită de zero dacă există un moment, trecut, prezent sau viitor, în care se aplică ora de vară).

Funcția tzset() inițializează aceste variabile la valori nespecificate dacă acest fus orar este un fus orar geografic precum "America/New_York" (a se vedea mai jos).

În cazul în care variabila TZ nu apare în mediu, se utilizează fusul orar al sistemului. Fusul orar al sistemului se configurează prin copierea, sau legarea unui fișier în format tzfile(5) în /etc/localtime. O bază de date a fuselor orare din aceste fișiere poate fi localizată în directorul de fus orar al sistemului (a se vedea secțiunea FIȘIERE de mai jos).

În cazul în care variabila TZ apare în mediu, dar valoarea sa este goală sau valoarea sa nu poate fi interpretată folosind oricare dintre formatele specificate mai jos, se utilizează timpul universal coordonat („Coordinated Universal Time”: UTC).

O valoare nevidă a lui TZ poate avea unul dintre cele două formate, oricare dintre acestea putând fi precedat de două puncte, care sunt ignorate. Primul format este un șir de caractere care reprezintă direct fusul orar care urmează să fie utilizat:

    std decalaj[dst[decalaj][,început[/time],sfârșit[/time]]]

Specificația nu conține spații. Șirul std specifică o abreviere pentru fusul orar și trebuie să fie format din trei sau mai multe caractere alfabetice. Atunci când este cuprins între semnele mai mic decât (<) și mai mare decât (>), setul de caractere este extins pentru a include semnul plus (+), semnul minus (-) și cifrele. Șirul decalaj urmează imediat după std și specifică valoarea timpului care trebuie adăugată la ora locală pentru a obține timpul universal coordonat (UTC). decalaj este pozitiv dacă fusul orar local se află la vest de meridianul de origine și negativ dacă se află la est. Ora trebuie să fie cuprinsă între 0 și 24, iar minutele și secundele între 00 și 59:

    [+|-]hh[:mm[:ss]]

Șirul dst și decalaj specifică numele și decalajul pentru fusul orar de vară corespunzător. În cazul în care decalajul este omis, acesta este implicit cu o oră înainte de ora standard.

Câmpul început specifică momentul în care intră în vigoare ora de vară, iar câmpul sfârșit specifică momentul în care se revine la ora standard. Aceste câmpuri pot avea următoarele formate:

Jn  Aceasta specifică ziua iuliană cu n între 1 și 365. Zilele bisecte nu sunt luate în considerare. În acest format, ziua de 29 februarie nu poate fi reprezentată; 28 februarie este ziua 59, iar 1 martie este întotdeauna ziua 60.

n   Aceasta specifică ziua iuliană bazată pe zero, cu n între 0 și 365. Ziua de 29 februarie este socotită în anii bisecți.

Ml.s.z
    Aceasta specifică ziua z (0 <= z <= 6) a săptămânii s (1 <= s <= 5) a lunii l (1 <= l <= 12). Săptămâna 1 este prima săptămână în care apare ziua z, iar săptămâna 5 este ultima săptămână în care apare ziua z. Ziua 0 este o duminică.

Câmpurile time specifică momentul în care, în ora locală în vigoare, are loc trecerea la cealaltă oră. Acestea utilizează același format ca și decalaj, cu excepția faptului că ora poate fi în intervalul [-167, 167] pentru a reprezenta momente înainte și după ziua numită. Dacă se omite, valoarea implicită este 02:00:00.

Iată un exemplu pentru Noua Zeelandă, unde ora standard (NZST) este cu 12 ore înainte de UTC, iar ora de vară (NZDT), cu 13 ore înainte de UTC, se aplică din ultima duminică din septembrie până în prima duminică din aprilie, iar schimbările au loc la ora implicită de 03:00:00:

    TZ="NZST-12:00:00NZDT-13:00:00,M9.5.0,M4.1.0/3"

Al doilea format - sau „geografic” - specifică faptul că informațiile privind fusul orar ar trebui să fie citite dintr-un fișier:

    filespec

filespec specifică un fișier în format tzfile(5) din care să se citească informațiile privind fusul orar. Dacă filespec nu începe cu un caracter „/”, specificația fișierului este relativă la directorul de fus orar al sistemului. Dacă fișierul specificat nu poate fi citit sau interpretat, se utilizează timpul universal coordonat (UTC); cu toate acestea, aplicațiile nu trebuie să depindă de valorile aleatorii filespec care reprezintă UTC, deoarece formatele TZ pot fi extinse în viitor.

Iată un exemplu, din nou pentru Noua Zeelandă:

    TZ="Pacific/Auckland"

MEDIU

TZ  Dacă această variabilă este definită, valoarea ei are prioritate față de fusul orar configurat de sistem.

TZDIR
    Dacă această variabilă este definită, valoarea ei are prioritate față de ruta la directorul bazei de date a fusului orar configurat de sistem.

FIȘIERE

/etc/localtime
    Fișierul cu fusul orar al sistemului.

/usr/share/zoneinfo/
    Directorul bazei de date cu fusul orar al sistemului.

/usr/share/zoneinfo/posixrules
    Atunci când un șir TZ include un fus orar dst fără a fi urmat de nimic, atunci acest fișier este utilizat pentru regulile de început și sfârșit. Acesta este în formatul tzfile(5). În mod prestabilit, fișierul Makefile zoneinfo face o legătură dură cu fișierul tzfile America/New_York.

Cele de mai sus sunt locațiile standard actuale ale fișierelor, dar acestea sunt configurabile atunci când glibc este compilată.

ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
Interfață | Atribut | Valoare
tzset() | Siguranța firelor | MT-Safe env locale

STANDARDE
POSIX.1-2024.

ISTORIC

tzset()
tzname
    POSIX.1-1988, SVr4, 4.3BSD.

timezone
daylight
    POSIX.1-2001 (XSI), SVr4, 4.3BSD.

4.3BSD avea o funcție char *timezone(zone, dst) care returna numele fusului orar corespunzător primului său argument (minute la vest de UTC). Dacă al doilea argument era 0, se folosea numele standard, în caz contrar se folosea versiunea pentru ora de vară.

PRECAUȚII
Deoarece valorile tzname, timezone și daylight sunt adesea nespecificate, iar accesarea lor poate duce la un comportament nedefinit în aplicațiile cu mai multe fire de execuție, codul ar trebui să obțină în schimb decalajul fusului orar și abrevierile din membrii tm_gmtoff și tm_zone ai structurii temporale defalcate tm(3type).

ERORI
Deoarece această funcție nu raportează erori, nu există nicio modalitate de a ști dacă valoarea TZ reprezintă un fus orar valid.

CONSULTAȚI ȘI
date(1), gettimeofday(2), time(2), ctime(3), getenv(3), tzfile(5)

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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.