strftime, wcsftime, _strftime_l, _wcsftime_l

Sformatuj ciąg czasu.

Składnia

size_t strftime(
   char *strDest,
   size_t maxsize,
   const char *format,
   const struct tm *timeptr
);
size_t _strftime_l(
   char *strDest,
   size_t maxsize,
   const char *format,
   const struct tm *timeptr,
   _locale_t locale
);
size_t wcsftime(
   wchar_t *strDest,
   size_t maxsize,
   const wchar_t *format,
   const struct tm *timeptr
);
size_t _wcsftime_l(
   wchar_t *strDest,
   size_t maxsize,
   const wchar_t *format,
   const struct tm *timeptr,
   _locale_t locale
);

Parametry

strDest
Ciąg wyjściowy.

maxsize
Rozmiar buforu strDest mierzony w znakach (char lub wchar_t).

format
Ciąg kontroli formatu.

timeptr
tm struktura danych.

locale
Ustawienia regionalne do użycia.

Wartość zwracana

strftime Zwraca liczbę znaków umieszczonych w strDest obiekcie i wcsftime zwraca odpowiednią liczbę znaków szerokich.

Jeśli całkowita liczba znaków, w tym wartość null zakończenia, jest większa niż maxsize, strftime i wcsftime zwraca wartość 0, a zawartość strDest elementu jest nieokreślona.

Liczba znaków w obiekcie strDest jest równa liczbie znaków literału w formatelemecie , a także wszystkich znaków, które można dodać za format pomocą kodów formatowania. Wartość null zakończenia ciągu nie jest liczone w wartości zwracanej.

Uwagi

Funkcje strftime i wcsftime sformatuj tm wartość czasu zgodnie timeptr z podanym format argumentem i przechowują wynik w buforze strDest. Co najwyżej maxsize znaki są umieszczane w ciągu. Aby uzyskać opis pól w timeptr strukturze, zobacz asctime. wcsftime jest znakiem odpowiadającym znakowi szerokiemu strftime; argument wskaźnika ciągu wskazuje ciąg o szerokim znaku. Te funkcje zachowują się identycznie inaczej.

Ta funkcja weryfikuje jego parametry. Jeśli strDestelement , formatlub timeptr jest wskaźnikiem o wartości null lub jeśli tm struktura danych rozwiązana przez timeptr element jest nieprawidłowa (na przykład jeśli zawiera ona wartości poza zakresem dla godziny lub daty) lub jeśli format ciąg zawiera nieprawidłowy kod formatowania, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w artykule Walidacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, funkcja zwraca wartość 0 i ustawia wartość errno .EINVAL

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Mapowania procedur tekstu ogólnego

TCHAR.H Rutynowych _UNICODE i _MBCS niezdefiniowane _MBCS Zdefiniowane _UNICODE Zdefiniowane
_tcsftime strftime strftime wcsftime

Argument format składa się z co najmniej jednego kodu, podobnie jak w printfprzypadku , kody formatowania są poprzedzone znakiem procentu (%). Znaki, które nie zaczynają się od % , są kopiowane bez zmian do strDest. Kategoria LC_TIME bieżących ustawień regionalnych ma wpływ na formatowanie danych wyjściowych .strftime (Aby uzyskać więcej informacji na temat LC_TIMEprogramu , zobacz setlocale.) Funkcje strftime i wcsftime używają obecnie ustawionych ustawień regionalnych. Wersje _strftime_l i _wcsftime_l tych funkcji są identyczne, z wyjątkiem tego, że przyjmują ustawienia regionalne jako parametr i używają tego zamiast aktualnie ustawionych ustawień regionalnych. Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.

Funkcje strftime obsługują następujące kody formatowania:

Kod Ciąg zastępczy
%a Skrócona nazwa dnia tygodnia w ustawieniach regionalnych
%A Pełna nazwa dnia tygodnia w ustawieniach regionalnych
%b Skrócona nazwa miesiąca w ustawieniach regionalnych
%B Pełna nazwa miesiąca w ustawieniach regionalnych
%c Reprezentacja daty i godziny odpowiednia dla ustawień regionalnych
%C Rok podzielony przez 100 i obcięty do liczby całkowitej jako liczba dziesiętna (00−99)
%d Dzień miesiąca jako liczba dziesiętna (01–31)
%D Odpowiednik %m/%d/%y
%e Dzień miesiąca jako liczba dziesiętna (1–31), gdzie pojedyncze cyfry są poprzedzone spacją
%F Odpowiednik %Y-%m-%d
%g Ostatnie 2 cyfry roku opartego na iso 8601 jako liczba dziesiętna (00–99)
%G Rok oparty na normie ISO 8601 jako liczba dziesiętna
%h Skrócona nazwa miesiąca (odpowiednik %b)
%H Godzina w formacie 24-godzinnym (00–23)
%I Godzina w formacie 12-godzinnym (01–12)
%j Dzień roku jako liczba dziesiętna (001 – 366)
%m Miesiąc jako liczba dziesiętna (01–12)
%M Minuta jako liczba dziesiętna (00–59)
%n Znak nowego wiersza (\n)
%p Wskaźnik A.M./PM ustawień regionalnych dla zegara 12-godzinnego
%r Czas zegara 12-godzinnego ustawień regionalnych
%R Odpowiednik %H:%M
%S Drugi jako liczba dziesiętna (00–59)
%t Znak karty poziomej (\t)
%T %H:%M:%SOdpowiednik formatu czasu ISO 8601
%u ISO 8601 dzień powszedni jako liczba dziesiętna (1–7; Poniedziałek to 1)
%U Numer tygodnia roku jako liczba dziesiętna (00 – 53), gdzie pierwsza niedziela to pierwszy dzień tygodnia 1
%V Numer tygodnia ISO 8601 jako liczba dziesiętna (00–53)
%w Dzień powszedni jako liczba dziesiętna (0 – 6; Niedziela to 0)
%W Numer tygodnia roku jako liczba dziesiętna (00 – 53), gdzie pierwszy poniedziałek to pierwszy dzień tygodnia 1
%x Reprezentacja daty dla ustawień regionalnych
%X Reprezentacja czasu dla ustawień regionalnych
%y Rok bez wieku, jako liczba dziesiętna (00 –99)
%Y Rok z stuleciem jako liczba dziesiętna
%z Przesunięcie z utc w formacie ISO 8601; brak znaków, jeśli strefa czasowa jest nieznana
%Z Nazwa strefy czasowej lub skrót strefy czasowej ustawień regionalnych, w zależności od ustawień rejestru; brak znaków, jeśli strefa czasowa jest nieznana
%% Znak procentu

Tak jak w printf funkcji, flaga # może prefiksować dowolny kod formatowania. W takim przypadku znaczenie kodu formatu jest zmieniane w następujący sposób.

Formatowanie kodu Znaczenie
%#a, %#A, %#b, %#B, %#g, %#G, %#h, %#n, %#p, %#t, %#u, %#w, %#X, %#z, %#Z, %#% # flaga jest ignorowana.
%#c Reprezentacja daty i godziny długiej, odpowiednia dla ustawień regionalnych. Na przykład: "Wtorek, 14 marca 1995, 12:41:29".
%#x Reprezentacja daty długiej, odpowiednia dla ustawień regionalnych. Na przykład: "Wtorek, 14 marca 1995".
%#d, %#D, %#e, %#F, %#H, %#I, %#j, %#m, %#M, %#r, %#R, %#S, %#T, %#U, %#V, %#W, %#y, %#Y Usuń zera wiodące lub spacje (jeśli istnieją).

Iso 8601 tydzień i rok tygodniowy produkowany przez %V, %gi %G, używa tygodnia, który rozpoczyna się w poniedziałek. Tydzień 1 to tydzień zawierający czwarty dzień stycznia, który jest pierwszym tygodniem obejmującym co najmniej cztery dni roku. Jeśli pierwszy poniedziałek roku jest drugi, trzeci lub 4, poprzednie dni są częścią ostatniego tygodnia poprzedniego roku. W tych dniach %V jest zastępowany przez 53, a oba %g i %G są zastępowane cyframi poprzedniego roku.

Uwaga

W przypadku używania jednej z strftime funkcji ze wskaźnikiem zwróconym tm ze gmtimewskaźnika wartości wydrukowane za pośrednictwem %Z specyfikatorów i %z nie będą dokładne. Wynika to z faktu, że tm struktura określona przez standard C nie zawiera informacji o nazwie strefy czasowej ani przesunięcia. Zamiast tego informacje o strefie czasowej są wypełniane za pośrednictwem zmiennych globalnych _timezone i _dstbias.

Wymagania

Procedura Wymagany nagłówek
strftime <time.h>
wcsftime <time.h> lub <wchar.h>
_strftime_l <time.h>
_wcsftime_l <time.h> lub <wchar.h>

Funkcje _strftime_l i _wcsftime_l są specyficzne dla firmy Microsoft. Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

Zobacz przykład dla elementu time.

Zobacz też

ustawienia regionalne
Zarządzanie czasem
Manipulowanie ciągami
localeconv
setlocale, _wsetlocale
strcoll, funkcje
strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l