Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /var/www/vhosts/bilgigunlugum.net/httpdocs/index.php on line 43
C Programlama

SDL3 Oyun Programlama sayfalarımız yayında...

Ana sayfa > Programlama > C Programlama > C standart kütüphanesi > <time.h> > strftime

strftime() fonksiyonu

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.