Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Opracował: Piotr DejaVu Szawdyński
Język C++

strftime

[funkcja] Konwertuje strukturę » standard Ctm na dowolnie sformatowaną datę lub czas.

Składnia

C/C++
#include<ctime>
typedef long size_t;

size_t strftime(
char * pOutput,
size_t maxOutputSize,
const char * sFormat,
const struct tm * pTime
);

Opis szczegółowy

Funkcja konwertuje dane zawarte strukturze » standard Ctm na dowolnie sformatowaną datę lub czas w postaci łańcucha znaków.

Formatowanie

Wszystkie znaki, które nie są poprzedzone znakiem % są kopiowane do bufora pOutput bez zmian. Znak % jest znakiem specjalnym i ma bezpośredni wpływ na znak po nim następujący. Kody formatujące są przedstawione w poniższej tabeli:
%aSkrócona nazwa dnia tygodnia (np. Fri).
%APełna nazwa dnia tygodnia (np. Friday).
%bSkrócona nazwa miesiąca (np. Oct).
%BPełna nazwa miesiąca (np. October).
%cPełna data. (np. "03/24/10 02:40:31")
%dDzień miesiaca (przedział 1-31).
%HGodzina w formacie 24 (0-23).
%IGodzina w formacie 12 (1-12).
%jDzień roku (1-366).
%mNumer miesiąca (1-12).
%MMinuty (0-59).
%pPokazuje AM lub PM.
%SSekundy (0-59).
%UTydzień roku (0-53), pierwszy tydzień liczy się od pierwszej niedzieli.
%wDzień tygodnia (0-6), niedziela to 0.
%WTydzień roku (0-53), 1 to pierwszy poniedziałek.
%xLiczbowo data (03/24/10).
%XLiczbowo godzina (02:40:31).
%yRok w postaci dwucyfrowej (00-99).
%YRok w postaci czterocyfrowej (np. 2010).
%ZStrefa czasowa.
%%Znak procenta.
Kody formatujące mogą również posiadać flagę #, która modyfikuje znaczenie wyżej wymienionych kodów formatujących. W poniższej tabeli zostało opisane znaczenie flagi dla każdego kodu formatującego:
Kod formatującyZnaczenie
%#a, %#A, %#p,
%#b, %#B, %#X,
%#z, %#Z, %#%
Flaga # jest ignorowana (flaga nie zmienia znaczenia kodów formatujących).
%#cDługa reprezentacja daty i czasu, zależna od aktualnych ustawień lokalnych.
Przykładowo: "Wednesday, March 24, 2010 02:31:32".
%#xDługa reprezentacja daty, zależna od aktualnych ustawień lokalnych.
Przykładowo: "Wednesday, March 24, 2010".
%#H, %#d, %#j,
%#I, %#m, %#M,
%#S, %#w, %#W,
%#U, %#y, %#Y
Usuwa niepotrzebne zera (jeśli jakieś występują).

Ustawienia lokalne mają wpływ na formatowane wyjście. Więcej informacji na ten temat w funkcji » standard Csetlocale.

Argumenty

Nazwa argumentuOpis
pOutputBufor wyjściowy.
maxOutputSizeRozmiar bufora (maksymalna ilość znaków, jaka może zostać zapisana do bufora pOutput wliczając znak kończący null).
sFormatŁańcuch znaków, określający sposób zaformatowania bufora wyjściowego.
pTimeWskaźnik na strukturę » standard Ctm.

Zwracana wartość

Zwraca liczbę znaków zapisanych w buforze wyjściowym pOutput.

Jeśli całkowita liczba znaków, która ma być zapisana w buforze wyjściowym (włącznie ze znakiem kończącym null) jest większa niż maxOutputSize funkcja zwróci wartość 0 i zawartość bufora wyjściowego jest nieokreślona.

Znak kończący łańcuch znaków nie jest wliczany do zwracanej wartości.

Przykład

C/C++
#include <ctime>
#include <cstdio>
#include <clocale>
int main()
{
    char bufor[ 64 ];
    time_t czas;
    time( & czas );
    tm czasTM = * localtime( & czas );
   
    strftime( bufor, sizeof( bufor ), "Obecna godzina to: %H:%M:%S", & czasTM );
    printf( "[Zawartosc bufora]: \"%s\"\n", bufor );
   
    setlocale( LC_ALL, "English" );
    strftime( bufor, sizeof( bufor ), "Dzis jest: %#c", & czasTM );
    printf( "[Zawartosc bufora]: \"%s\"\n", bufor );
   
    setlocale( LC_ALL, "Polish" );
    strftime( bufor, sizeof( bufor ), "Dzis jest: %#c", & czasTM );
    printf( "[Zawartosc bufora]: \"%s\"\n", bufor );
    return 0;
}
Przykładowe wyjście programu:
[Zawartosc bufora]: "Obecna godzina to: 02:39:16"
[Zawartosc bufora]: "Dzis jest: Wednesday, March 24, 2010 2:39:16 AM"
[Zawartosc bufora]: "Dzis jest: 24 marzec 2010 02:39:16"

Zagadnienia powiązane

tmPrzechowuje składowe daty i czasu w postaci liczb. (struktura)
asctimeKonwertuje strukturę » standard Ctm na łańcuch znaków reprezentujący datę i czas. (funkcja)
ctimeKonwertuje » standard Ctime_t na łańcuch znaków reprezentujący datę i czas. (funkcja)
setlocale (funkcja)

Linki zewnętrzne