BG MVC Model View Controller eğitim serisi yayında...

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

asctime() fonksiyonu

Bildirim

char* asctime(const struct tm *tmptr);

errno_t asctime_s(char *buf, rsize_t bufsz, const struct tm *tmptr); (C11)

Açıklama

Tmptr parametresi ile gösterilen tm zaman yapısı içindeki int değişken değerleri ile oluşturduğu yıl, ay, gün ve saat bilgilerini içeren karakter dizisini geri döndürür. Geri döndürülen karakter dizisi aşağıdaki yapıdadır:

www mmm dd hh:mm:ss yyyy

Mon Oct 14 18:47:24 2019

www: Haftanın gününü 3 harf ile gösterir.

mmm: Ayı 3 harf ile gösterir.

dd: Ayın kaçıncı günü olduğunu sayı ile gösterir.

hh: Günün saatini gösterir.

mm: Dakikayı gösterir.

ss: Saniyeyi gösterir.

Geri döndürülen karakter dizisi yeni satır karakteri ('\n') ve boş bir karakter ('\0') ile sonlandırılır.

asctime_s() fonksiyonu ayrıca, karakter dizisini kullanıcı tarafından sağlanan ve buf parametresi ile gösterilen boş bir karakterle sonlandırılmış olan belleğe kopyalar. Aşağıdaki hatalar çalışma zamanında algılandığında, yüklenmiş olan kısıtlayıcı işlem fonksiyonu çağrılır:

  • Buf veya tmptr parametre değeri NULL bir işaretçi ise,
  • Bufsz parametre değeri 26 değerinden küçük veya RSIZE_MAX değerinden büyük ise,
  • Tmptr içindeki bütün değerler normal aralıkta değilse,
  • tmptr->tm_year değeri 0'dan küçük veya 9999'dan büyük ise.

Parametreler

tmptr: Yazdırılacak tm 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 */
};

buf: En az 26 byte uzunluğunda kullanıcı tarafından sağlanan belleği gösteren bir işaretçidir.

bufsz: Kullanıcı tarafından sağlanan belleğin boyutudur.

Dönüş değeri

Asctime() fonksiyonu tm yapısındaki bir zamanı rahatça okunabilecek karakter dizisi halinde geri döndürür.

Asctime_s() fonksiyonu başarı durumunda 0 değerini, hata durumunda sıfır olmayan değer geri döndürür. Hata durumunda ayrıca, buf NULL bir işaretçi değilse veya bufsz sıfır değilse veya RSIZE_MAX değerinden büyük değil ise, buf[0] adresine 0 değerini yazar.

Örnek


#include <stdio.h>
#include <time.h>

int main(void)
{
    time_t time_1970;
    struct tm *time_detay;

    time_1970 = time(NULL);

    /* 1 Ocak 1970'den bugüne saniye olarak geçen zaman */
    printf("1 Ocak 1970'den bugüne geçen zaman: %ld saniye\n", time_1970);

    /* Evrensel Zaman (UTC) veya GMT zamanı */
    time_detay = gmtime(&time_1970);
    printf("Evrensel zaman: %s", asctime(time_detay));

    /* Yerel zaman */
    time_detay = localtime(&time_1970);
    printf("Yerel zaman: %s", asctime(time_detay));
}


Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar.

1 Ocak 1970'den bugüne geçen zaman: 1571068044 saniye
Evrensel zaman: Mon Oct 14 15:47:24 2019
Yerel zaman: Mon Oct 14 18:47:24 2019

Program time() fonksiyonu ile 1 Ocak 1970'den bugüne geçen zamanı saniye olarak alır ve ekrana yazar. Bu değeri gmtime() fonksiyonu ile GMT zamanına çevirerek ve localtime() fonksiyonu ile yerel zamana çevirerek, asctime() fonksiyonu ile ayrı ayrı ekrana yazar.