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:
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.