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.

