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 format
elemecie , 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 strDest
element , format
lub 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 rutyna |
_UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tcsftime |
strftime |
strftime |
wcsftime |
Argument format
składa się z co najmniej jednego kodu, podobnie jak w printf
przypadku , 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_TIME
programu , 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:%S Odpowiednik 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 , , , %#H %#V %#S %#T %#R %#U %#W %#F %#j %#y %#I %#m %#M %#r %#e %#Y |
Usuń zera wiodące lub spacje (jeśli istnieją). |
Iso 8601 tydzień i rok tygodniowy produkowany przez %V
, %g
i %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 gmtime
wskaź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