Bildirim
size_t strftime(char *buf, size_t bufsz, const char *format, const struct tm *tmptr);
size_t strftime(char *restrict buf, size_t bufsz, const char *restrict format, const struct tm *restrict tmptr); (C99)
Açıklama
Tmptr parametresi ile gösterilen tm zaman yapısı içindeki değerleri, yerel zamana ve format parametresi ile gösterilen yapıya uygun olarak, en fazla bufsz parametre değeri kadar boyutta olmak üzere, buf parametresi ile gösterilen boş bir karakterle sonlandırılmış çok byte'lı bir karakter dizisine çevirir.
Parametreler
buf: Elde edilen karakter dizisinin kopyalanacağı karakter dizisini gösteren bir işaretçidir.
bufsz: Buf parametresine kopyalanacak maksimum karakter sayısıdır.
format: Normal karakterler ve format tanımlayıcılarının yer aldığı bir karakter dizisidir. Buf karakter dizisi içindeki her bir format tanımlayıcı yerine tmptr yapı değişkeni içinde yer alan ilgili değişkenler yerleştirilir.Zaman tanımlamada kullanılan format tanımlayıcıları aşağıdadır:
Format tanımlayıcı | Yerini alacak değer | Örnek |
---|---|---|
%a | Hafta gününün kısaltılmış adı | Tue |
%A | Hafta gününün tam adı | Tuesday |
%b | Ay adının kısaltılmış hali | Oct |
%B | Ay adının tam hali | October |
%c | Tarih ve saat bilgisi | Tue Oct 15 15:54:37 2019 |
%C (C99) | Yıl değerinin 100'e bölünerek 0-99 arasında aldığı değer | 20 |
%d | Ayın gün sayısı (01-31), tek haneler 0 ile doldurulur. | 15 |
%D (C99) | Kısa tarih değeri MM/DD/YY | 10/15/19 |
%e (C99) | Ayın gün sayısı (1-31), tek haneler boşluk ile doldurulur. | 20 |
%F (C99) | Kısa tarih değeri YYYY-MM-DD | 2019-10-15 |
%g (C99) | Haftaya dayalı yıl değeri, son iki rakam (0-99) | 19 |
%G (C99) | Haftaya dayalı yıl değeri | 2019 |
%h (C99) | Ay adının kısaltılmış hali | Oct |
%H | Saat yapısı, 24 saat (00-23) | 13 |
%I | Saat yapısı, 12 saat (01-12) | 01 |
%j | Yılın gün sayısı (001-366). | 288 |
%m | Ay sayısı (01-12) | 10 |
%M | Dakika (00-59) | 19 |
%n (C99) | Yeni satır karakteri ('\n') | nbsp; |
%p | AM veya PM tahsisi | PM |
%r (C99) | 12 saatlik saat bildirimi | 01:23:15 PM |
%R (C99) | 24 saatlik saat bildirimi | 13:23 |
%S | Saniye (00-61) | 08 |
%t (C99) | Yatay tab kaakteri ('\t') | nbsp; |
%T (C99) | ISO 8601 zaman formatı (HH:MM:SS) | 13:28:30 |
%u (C99) | ISO 8601 hafta günü sayı olarak, Pazartesi 1 olmak üzere (1-7) | 2 |
%U | Hafta sayısı, ilk haftanın birinci günü pazar (00-53) | 41 |
%V (C99) | ISO 8601 hafta sayısı (01-53) | 42 |
%w | Haftanın gün sayısı, pazar 0 olmak üzere (0-6) | 2 |
%W | Hafta sayısı, ilk haftanın birinci günü pazartesi (00-53) | 41 |
%x | Tarih bildirimi | 10/15/19 |
%X | Saat bildirimi | 13:40:26 |
%y | Yıl, son iki rakamı (00-99) | 19 |
%Y | Yıl | 2019 |
%z (C99) | ISO 8601 offset değeri UTC'ye göre zaman dilimi | +0000 |
%Z | Zaman dilimi adı veya kısaltması | Türkiye Standart Saati |
%% | % karakteri | % |
tmptr: Zaman değerlerini içeren tm yapı değişkenini gösteren bir işaretçidir.
struct tm { int tm_sec; /* Saniye: 0-59 */ int tm_min; /* Dakika: 0-59 */ int tm_hour; /* Saat : 0-23 */ int tm_mday; /* Ayın günü: 1-31 */ int tm_mon; /* Aylar Ocak'tan itibaren: 0-11 */ int tm_year; /* Yıllar 1900'den itibaren */ int tm_wday; /* Hafta gün sayısı Pazar'dan itibaren (0-6) */ int tm_yday; /* Yıl gün sayısı 1 Ocak'tan itibaren : 0-365 */ int tm_isdst; /* +1 Günışığından Faydalanma Zamanı, 0 GFZ yok, -1 Bilgi yok */ };
Dönüş değeri
Başarı durumunda, buf karakter dizisinin boyutu bufsz değerinden büyük olmazsa, buf parametresi ile gösterilen karakter dizisine yazılan byte sayısını (sondaki boş karakter hariç) geri döndürür. Aksi takdirde, 0 değeri döndürülür ve içerik tanımsız olur.
Örnek
#include <stdio.h>
#include <time.h>
int main(void)
{
time_t time_1970;
struct tm *time_detay;
char cdizi[100];
time_1970 = time(NULL);
/* Yerel zaman */
time_detay = localtime(&time_1970);
printf("Yerel zaman: %s", asctime(time_detay));
strftime (cdizi, 100, "Bugün: %d %B %Y %A Saat: %X", time_detay);
printf("%s", cdizi);
return 0;
}
Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar.
Yerel zaman: Tue Oct 15 11:48:29 2019 Bugün: 15 October 2019 Tuesday Saat: 11:48:29
Program time() fonksiyonu ile 1 Ocak 1970'den bugüne geçen zamanı saniye olarak alır. Bu değeri localtime() fonksiyonu ile yerel zamana çevirerek, asctime() fonksiyonu ile ekrana yazar. Sonra, strftime() fonksiyonu ile zamanı gösteren farklı bir yapı oluşturup ekrana yazar.