There are a lot of people who don’t know how to check the valid date and make mistakes at the time of the creation of the date. In this article, I will describe the way to how to create and check the validity of the date.
Whenever you require to create a date manually then you should care about the following points.
- Year, months and days range.
- Leap Year.
- Months that have 30 days
- Months that have 31 days
If you want to learn more about the c language, here 10 Free days C video course for you.
In the below program, I am reading the user entered data and create date in dd/mm/yyyy format. Before creating the date I will verify the user entered data.
- I am following the below steps to accomplish the program.
- First checking range of the years, months and days.
- Handle the leap year (day of Feb months).
- Handle the months which have 30 days.
See below program to check valid date:
This function read the date in the format of dd/mm/yyyy, so enter the data in the mentioned format. If you want you can change the code and take the user input one by one.
#include <stdio.h> #include <time.h> #define MAX_YR 9999 #define MIN_YR 1900 //structure to store date typedef struct { int yyyy; int mm; int dd; } Date; // Function to check leap year. //Function returns 1 if leap year int IsLeapYear(int year) { return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)); } // returns 1 if given date is valid. int isValidDate(Date *validDate) { //check range of year,month and day if (validDate->yyyy > MAX_YR || validDate->yyyy < MIN_YR) return 0; if (validDate->mm < 1 || validDate->mm > 12) return 0; if (validDate->dd < 1 || validDate->dd > 31) return 0; //Handle feb days in leap year if (validDate->mm == 2) { if (IsLeapYear(validDate->yyyy)) return (validDate->dd <= 29); else return (validDate->dd <= 28); } //handle months which has only 30 days if (validDate->mm == 4 || validDate->mm == 6 || validDate->mm == 9 || validDate->mm == 11) return (validDate->dd <= 30); return 1; } int main(void) { Date getDate = {0}; //variable to store date int status = 0; //variable to check status //get date year,month and day from user printf("\n\n Enter date in format (day/month/year): "); scanf("%d/%d/%d",&getDate.dd,&getDate.mm,&getDate.yyyy); //check date validity status = isValidDate(&getDate); if(status !=1) { printf("\n\n Please enter a valid date!\n"); } else { printf("\n\n Date is valid!\n"); } return 0; }
Code Analysis:
In the above c code example, first, we ask the users to enter the date in the format of years, months and days.
//get date year,month and day from user printf("\n\n Enter date in format (day/month/year): "); scanf("%d/%d/%d",&getDate.dd,&getDate.mm,&getDate.yyyy);
Now check the validity of the date to call the function is ValidDate. In which I am checking the validity of the days months and years as per the calendar. if the date is valid, displaying the message valid date.
//check date validity status = isValidDate(&getDate); if(status !=1) { printf("\n\n Please enter a valid date!\n"); } else { printf("\n\n Date is valid!\n"); }
Recommended Articles for you:
- How to use if in C programming.
- How to use C if-else condition?
- Create an employee record system in C.
- Way to create a library management system in C.
- How to create student record system in C?
- How to use for loop in C?
- You should know while loop use.
- When we should use do while in the C program.
- Use of the switch case in the C program.
- C language character set.
- Elements of C Language.
- Data type in C language.
- Operators with Precedence and Associativity.
- How to pass an array as a parameter?
- Memory Layout in C.
- File handling in C, In a few hours.
- Replacing nested switches with the multi-dimensional array
- How to access a two-dimensional array using pointers?
- Brief Introduction of switch case in C.
- 100 C interview Questions.
- Function pointer in c, a detailed guide.
- How to use the structure of function pointer in c language?
- Function pointer in structure.
- Pointer Arithmetic in C.
- Brief Introduction of void pointer in C.