getdate(3) Library Functions Manual getdate(3) NUME getdate, getdate_r - convertete un ir de caractere care conine data i ora intr-un format de timp defalcat BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include struct tm *getdate(const char *string); extern int getdate_err; int getdate_r(const char *restrict string, struct tm *restrict res); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): getdate(): _XOPEN_SOURCE >= 500 getdate_r(): _GNU_SOURCE DESCRIERE Funcia getdate() convertete o reprezentare sub forma de ir a unei date i ore, coninuta in tamponul indicat de string, intr-o ora defalcata. Ora defalcata este stocata intr-o structura tm, iar un indicator catre aceasta structura este returnat ca rezultat al funciei. Aceasta structura tm este alocata in memoria statica i, in consecina, va fi suprascrisa de apeluri ulterioare catre getdate(). Spre deosebire de strptime(3) (care are un argument format), getdate() utilizeaza formatele gasite in fiierul al carui nume complet este specificat in variabila de mediu DATEMSK. Prima linie din fiier care corespunde irului de caractere introdus este utilizata pentru conversie. Potrivirea se face fara a ine cont de majuscule i minuscule. Spaiile albe inutile, fie in model, fie in irul care urmeaza sa fie convertit, sunt ignorate. Specificaiile de conversie pe care le poate conine un model sunt cele date pentru strptime(3). O alta specificaie de conversie este specificata in POSIX.1-2001: %Z Numele fusului orar. Acest lucru nu este implementat in glibc. Cand se specifica %Z, structura care conine ora defalcata este iniializata cu valori corespunzatoare orei curente in fusul orar specificat. In caz contrar, structura este iniializata cu ora defalcata corespunzatoare orei locale curente (ca urmare a apelului la localtime(3)). Cand se specifica doar ziua saptamanii, se considera ca ziua respectiva este prima zi de acest fel din ziua de azi sau din zilele urmatoare. Cand se specifica doar luna (i nu anul), se considera ca luna este prima luna egala cu sau ulterioara lunii curente. Daca nu se specifica ziua, se considera ca este prima zi a lunii. Cand nu sunt specificate ora, minutul i secunda, se iau ora, minutul i secunda curente. Daca nu este specificata data, dar cunoatem ora, atunci acea ora este considerata prima ora egala sau ulterioara orei curente. getdate_r() este o extensie GNU care ofera o versiune reentranta a getdate(). In loc sa utilizeze o variabila globala pentru a raporta erorile i un tampon static pentru a returna timpul defalcat, aceasta returneaza erorile prin valoarea rezultatului funciei i returneaza timpul defalcat rezultat in tamponul alocat de apelant, indicat de argumentul res. VALOAREA RETURNATA Cand are succes, getdate() returneaza un indicator catre o structura struct tm. In caz contrar, returneaza NULL i definete variabila globala getdate_err la unul dintre numerele de eroare prezentate mai jos. Modificarile aduse errno sunt nespecificate. In caz de succes, getdate_r() returneaza 0; in caz de eroare, returneaza unul dintre numerele de eroare prezentate mai jos. ERORI-IEIRE Urmatoarele erori sunt returnate prin getdate_err (pentru getdate()) sau ca rezultat al funciei (pentru getdate_r()): 1 Variabila de mediu DATEMSK nu este definita sau valoarea sa este un ir gol. 2 Fiierul sablon specificat de DATEMSK nu poate fi deschis pentru citire. 3 Nu s-au putut obine informaii despre starea fiierului. 4 Fiierul ablon nu este un fiier obinuit. 5 A aparut o eroare la citirea fiierului ablon. 6 Alocarea memoriei a euat (memorie insuficienta disponibila). 7 Nu exista nicio linie in fiier care sa corespunda cu intrarea. 8 Specificaie de intrare nevalida. MEDIU DATEMSK Fiier care conine modele de format. TZ LC_TIME Variabilele utilizate de strptime(3). ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +------------+---------------------+-----------------------------------+ |Interfaa | Atribut | Valoare | +------------+---------------------+-----------------------------------+ |getdate() | Sigurana firelor | MT-Unsafe race:getdate env locale | +------------+---------------------+-----------------------------------+ |getdate_r() | Sigurana firelor | MT-Safe env locale | +------------+---------------------+-----------------------------------+ VERSIUNI Specificaia POSIX.1 pentru strptime(3) conine specificaii de conversie care utilizeaza modificatorul %E sau %O, in timp ce astfel de specificaii nu sunt furnizate pentru getdate(). In glibc, getdate() este implementata utilizand strptime(3), astfel incat ambele sa accepte exact aceleai conversii. STANDARDE POSIX.1-2008. ISTORIC POSIX.1-2001. EXEMPLE Programul de mai jos apeleaza getdate() pentru fiecare dintre argumentele sale din linia de comanda i, pentru fiecare apel, afieaza valorile din campurile structurii tm returnate. Urmatoarea sesiune shell demonstreaza funcionarea programului: $ TFILE=$PWD/tfile $ echo '%A' > $TFILE # Numele complet al zilei saptamanii $ echo '%T' >> $TFILE # Ora (HH:MM:SS) $ echo '%F' >> $TFILE # Data ISO (AAAA-LL-ZZ) $ date $ export DATEMSK=$TFILE $ ./a.out Tuesday '2009-12-28' '12:22:33' Sun Sep 7 06:03:36 CEST 2008 Call 1 ("Tuesday") succeeded: tm_sec = 36 tm_min = 3 tm_hour = 6 tm_mday = 9 tm_mon = 8 tm_year = 108 tm_wday = 2 tm_yday = 252 tm_isdst = 1 Call 2 ("2009-12-28") succeeded: tm_sec = 36 tm_min = 3 tm_hour = 6 tm_mday = 28 tm_mon = 11 tm_year = 109 tm_wday = 1 tm_yday = 361 tm_isdst = 0 Call 3 ("12:22:33") succeeded: tm_sec = 33 tm_min = 22 tm_hour = 12 tm_mday = 7 tm_mon = 8 tm_year = 108 tm_wday = 0 tm_yday = 250 tm_isdst = 1 Sursa programului #define _GNU_SOURCE #include #include #include int main(int argc, char *argv[]) { struct tm *tmp; for (size_t j = 1; j < argc; j++) { tmp = getdate(argv[j]); if (tmp == NULL) { printf("Call %zu failed; getdate_err = %d\n", j, getdate_err); continue; } printf("Call %zu (\"%s\") succeeded:\n", j, argv[j]); printf(" tm_sec = %d\n", tmp->tm_sec); printf(" tm_min = %d\n", tmp->tm_min); printf(" tm_hour = %d\n", tmp->tm_hour); printf(" tm_mday = %d\n", tmp->tm_mday); printf(" tm_mon = %d\n", tmp->tm_mon); printf(" tm_year = %d\n", tmp->tm_year); printf(" tm_wday = %d\n", tmp->tm_wday); printf(" tm_yday = %d\n", tmp->tm_yday); printf(" tm_isdst = %d\n", tmp->tm_isdst); } exit(EXIT_SUCCESS); } CONSULTAI I time(2), localtime(3), setlocale(3), strftime(3), strptime(3) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.15 17 mai 2025 getdate(3)