Konwersja daty na ciąg znaków

C:
Konwersja daty na ciąg znaków

Jak to zrobić:

Do tego celu często używana jest funkcja strftime z biblioteki <time.h>. Pozwala ona na formatowanie daty i czasu w różnorodny sposób, poprzez określenie specyfikatorów formatu. Oto krótki przykład:

#include <stdio.h>
#include <time.h>

int main() {
    char dateStr[100];
    time_t now = time(NULL);
    struct tm *ptm = localtime(&now);

    // Konwersja daty i czasu na ciąg znaków (np. "Wed Jun 30 21:49:08 2021")
    strftime(dateStr, sizeof(dateStr), "%a %b %d %H:%M:%S %Y", ptm);
    
    printf("Aktualna data i czas: %s\n", dateStr);
    return 0;
}

Przykładowe wyjście może wyglądać tak:

Aktualna data i czas: Wed Jun 30 21:49:08 2021

Można dostosować format, zmieniając specyfikatory formatów przekazywane do strftime. Na przykład, aby uzyskać datę w formacie RRRR-MM-DD, użyłbyś "%Y-%m-%d".

Pogłębienie tematu

Funkcja strftime oraz biblioteka <time.h> są częścią Standardowej Biblioteki C, która sięga czasów oryginalnego standardu ANSI C (C89/C90). Choć ta metoda jest prosta i obsługiwana na wielu platformach, w porównaniu z nowoczesnymi językami programowania, które oferują bardziej intuicyjne biblioteki daty i czasu, może wydawać się niskopoziomowa i uciążliwa.

Należy zauważyć, że choć funkcje czasu standardowej biblioteki C są szeroko obsługiwane i stosunkowo proste w użyciu, brakuje im niektórych bardziej złożonych funkcji manipulacji strefą czasową i internacjonalizacji, które można znaleźć w bibliotekach nowszych języków lub w bibliotekach stron trzecich dla C, takich jak Międzynarodowe Komponenty dla Unicode (ICU).

Jednak możliwości dostosowywania funkcji strftime oraz szerokie wsparcie platformowe czynią ją niezawodnym i przydatnym narzędziem do konwersji daty na ciąg znaków w C. Programiści pochodzący z języków z bibliotekami daty i czasu na wyższym poziomie abstrakcji mogą potrzebować dostosować się do jej niskopoziomowego charakteru, ale znajdą ją wyjątkowo potężną i wszechstronną do formatowania dat i czasów dla różnorodnych zastosowań.