Aşağıdaki program, bg_datecmp() fonksiyonu içinde <time.h> fonksiyonlarını kullanarak iki tarih değerini karşılaştırır. Fonksiyon, ilk tarih değeri ikincisinden büyük ise 1 değerini, küçük ise -1 değerini ve iki değer birbirine eşit ise sıfır değerini geri döndürür.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <locale.h>
int bg_datecmp (const char *date1, const char *date2);
int main(void)
{
int id;
// Türkçe karakterler için
setlocale(LC_ALL, "Turkish");
id = bg_datecmp ("12.04.2020", "09.02.2020");
if (id==1) printf("İlk tarih daha büyüktür!");
else if (id==-1) printf("İkinci tarih daha büyüktür!");
else printf("İki tarih birbirine eşittir!");
return 0;
}
int bg_datecmp (const char *date1, const char *date2)
{
time_t time_1970, time01, time02;
struct tm *tmd;
char cdizi[5];
double dif;
time_1970 = time(NULL);
tmd = localtime(&time_1970);
// İlk tarih
sprintf(cdizi, "%c%c", date1[0], date1[1]);
tmd->tm_mday = atoi(cdizi);
sprintf(cdizi, "%c%c", date1[3], date1[4]);
tmd->tm_mon = atoi(cdizi)-1;
sprintf(cdizi, "%c%c%c%c", date1[6], date1[7], date1[8], date1[9]);
tmd->tm_year = atoi(cdizi)-1900;
time01 = mktime(tmd);
// İkinci tarih
sprintf(cdizi, "%c%c", date2[0], date2[1]);
tmd->tm_mday = atoi(cdizi);
sprintf(cdizi, "%c%c", date2[3], date2[4]);
tmd->tm_mon = atoi(cdizi)-1;
sprintf(cdizi, "%c%c%c%c", date2[6], date2[7], date2[8], date2[9]);
tmd->tm_year = atoi(cdizi)-1900;
time02 = mktime(tmd);
dif = difftime(time01, time02);
if(dif > 0) return 1;
else if(dif == 0) return 0;
else return -1;
}
Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:
İlk tarih daha büyüktür!