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

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

mktime() fonksiyonu

Bildirim

time_t mktime(struct tm *tmptr);

Açıklama

Tmptr parametresi ile gösterilen tm zaman yapısı içindeki değerleri, yerel zamana uygun olarak, time_t zaman veri türüne çevirir. Bu fonksiyon, localtime() fonksiyonunun yaptığı işlemin tersini gerçekleştirir.

Tmptr->tm_wday ve tmptr->tm_yday değerleri dikkate alınmaz. Time_t veri türüne dönüşüm başarılı olursa, time değişkeni değiştirilir. Tüm zaman değerleri kendi geçerli aralık değerlerine uyacak şekilde güncellenir. Tmptr->tm_wday ve tmptr->tm_yday diğer alanlardaki bilgiler kullanılarak yeniden hesaplanır.

Parametreler

tmptr: Çevrilecek olan 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 takvim zamanını gösteren bir time_t değişkeni, hata durumunda ise -1 değeri geri döndürür.

Örnek


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

int main(void)
{
    time_t time_1970, time_3month;
    struct tm *time_detay;
    double ret;

    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);

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

    /* 3 ay geri gidiş */
    time_detay->tm_mon -= 3;
    time_3month = mktime(time_detay);
    printf("3 ay önceki yerel zaman: %s", ctime(&time_3month));

    ret = difftime(time_1970, time_3month);

    printf("3 ay önceden bu ana kadar %.2f saniye geçti.", ret);

    return 0;
}


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

1 Ocak 1970'den bugüne geçen zaman: 1571127666 saniye
Yerel zaman: Tue Oct 15 11:21:06 2019
3 ay önceki yerel zaman: Mon Jul 15 11:21:06 2019
3 ay önceden bu ana kadar 7948800.00 saniye geçti.

Program time() fonksiyonu ile 1 Ocak 1970'den bugüne geçen zamanı saniye olarak alır ve ekrana yazar. Bu değeri localtime() fonksiyonu ile yerel zamana çevirerek, asctime() fonksiyonu ile ekrana yazar. Zaman yapısı içinde sadece tm_mon değerini 3 ay geri alarak mktime() fonksiyonu ile yeni bir time_t değeri oluşturur. Yeni zamanı ctime() fonksiyonu ile ekrana yazar. Son olarak, difftime() fonksiyonu iki zaman diliminin farkını saniye olarak alır ve elde ettiği değeri ekrana yazar.