C Program to Print Date and Time - JohnHau/mis GitHub Wiki
In this article you will learn and get code about printing of date and time in following ways:
Print Date/Time with Default Format Print Date in DD-MM-YYYY Format Print Time in HH:MM:SS Format Print Date/Time with Month Name and AM/PM Format Print Date and Time Let's create a program that prints the current date and time with default format.
#include<stdio.h> #include<conio.h> #include<time.h> int main() { time_t tm; time(&tm); printf("Current Date/Time = %s", ctime(&tm)); getch(); return 0; }
Print Date in DD-MM-YYYY Format Now let's format the current date in DD-MM-YYYY form, where DD represents day's date (1-31), MM represents month (1-12), and YYYY represents the year.
#include<stdio.h> #include<conio.h> #include<time.h> int main() { time_t t; t = time(NULL); struct tm tm = *localtime(&t); printf("Current Date: %d-%d-%d", tm.tm_mday, tm.tm_mon+1, tm.tm_year+1900); getch(); return 0; }
The function localtime() returns the local time of system. It is defined in time.h header file. It accepts a parameter that represents the pointer to time_t object. And returns a pointer to a struct tm object. Now using the structure, the object tm can access the data members say tm_mday, tm_mon and tm_year respectively. Print its value as output that will be the Date, Month, and Year.
Note - The tm_year field is relative to 1900 on all POSIX-compliant platforms. Therefore we have added 1900 to it. If 1900 was not added to it, then in place of 2020 as current year, it would print 120 as current year, that tells, it is 120 years since 1900.
Note - The tm_mon displayed starting from 1 rather with 0. Because, if 1 is not added, then for January it will show 0th month (starting or very first month of every year).
Print Time in HH:MM:SS Format Let's create the same program as of previous one with little changes to print time in HH:MM:SS format in place of date. Here HH represents hours, MM represents minutes, and SS represents seconds.
#include<stdio.h> #include<conio.h> #include<time.h> int main() { time_t t; t = time(NULL); struct tm tm; tm = *localtime(&t); printf("Current Time: %d:%d:%d", tm.tm_hour, tm.tm_min, tm.tm_sec); getch(); return 0; }
Print Date/Time with Month Name & AM/PM This program uses switch case to match the month number and print its name. For example, if month number is 1, then print it as Jan, and if it is 2, then print it as Feb and so on. For time, we have used if-else statement to match whether the current hour value is greater than 12 or not. If it is greater than 12, then print PM, otherwise print AM.
#include<stdio.h> #include<conio.h> #include<time.h> int main() { time_t t; t = time(NULL); struct tm tm = *localtime(&t); int m; printf("Today's Date: %d ", tm.tm_mday); m = tm.tm_mon+1; switch(m) { case 1: printf("Jan, "); break; case 2: printf("Feb, "); break; case 3: printf("Mar, "); break; case 4: printf("Apr, "); break; case 5: printf("May, "); break; case 6: printf("June, "); break; case 7: printf("July, "); break; case 8: printf("Aug, "); break; case 9: printf("Sep, "); break; case 10: printf("Oct, "); break; case 11: printf("Nov, "); break; case 12: printf("Dec, "); break; } printf("%d", tm.tm_year+1900); printf("\nToday's Time: "); if(tm.tm_hour>=12) { if(tm.tm_hour==12) printf("12"); else printf("%d", tm.tm_hour-12); printf(":%d:%d PM", tm.tm_min, tm.tm_sec); } else printf("%d:%d:%d AM", tm.tm_hour, tm.tm_min, tm.tm_sec); getch(); return 0; }