Belirli bir tarihe istediğimiz sayıda gün ekleme veya çıkarma işlemi yapmak için mktime() fonksiyonunu kullanabiliriz.
Aşağıdaki program, önce time() fonksiyonu ile elde ettiği zamanı localtime() fonksiyonu ile yerel zaman çevirerek ekrana yazar. tm yapısı içinde yer alan gün değerini 21 artırdıktan sonra, mktime() fonksiyonu ile yeni tarih değerini elde eder. Elde edilen zamanı localtime() fonksiyonu ile yerel zaman çevirerek ekrana yazar.
Daha önceki bir tarihi elde etmek için, aynı işlem benzer şekilde çıkarma yöntemi ile yapılabilir.
#include <stdio.h>
#include <locale.h>
#include <time.h>
int main(void)
{
setlocale(LC_ALL, "Turkish"); /* Türkçe karakterler için */
time_t time_1970, time_new;
struct tm* time_detay;
time_1970 = time(NULL); // 1 Ocak 1970'den bugüne saniye olarak geçen zaman
time_detay = localtime(&time_1970); // Yerel zaman
printf("Bugünün tarihi: %.2d.%.2d.%4d", time_detay->tm_mday, time_detay->tm_mon+1, time_detay->tm_year+1900);
time_detay->tm_mday += 21;
time_new = mktime(time_detay);
time_detay = localtime(&time_new);
printf("\n21 gün sonraki tarih: %.2d.%.2d.%4d", time_detay->tm_mday, time_detay->tm_mon+1, time_detay->tm_year+1900);
return 0;
}
Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:
Bugünün tarihi: 03.04.2023 21 gün sonraki tarih: 24.04.2023