w3resource

Date Structure in C: Calculate difference between two dates


6. Date Structure Operations

Define a structure named "Date" with members day, month, and year. Write a C program to input two dates and find the difference in days between them.

Sample Solution:

C Code:

#include <stdio.h>

// Define the structure "Date"
struct Date {
    int day;
    int month;
    int year;
};

// Function to calculate the number of days in a month
int daysInMonth(int month, int year) {
    switch (month) {
        case 1: case 3: case 5: case 7: case 8: case 10: case 12:
            return 31;
        case 4: case 6: case 9: case 11:
            return 30;
        case 2:
            // Check for leap year
            if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
                return 29;
            } else {
                return 28;
            }
        default:
            return -1; // Invalid month
    }
}

// Function to calculate the difference in days between two dates
int dateDifference(struct Date d1, struct Date d2) {
    int days1 = d1.day + (d1.month - 1) * daysInMonth(d1.month, d1.year) + d1.year * 365;
    int days2 = d2.day + (d2.month - 1) * daysInMonth(d2.month, d2.year) + d2.year * 365;

    return days2 - days1;
}

int main() {
    // Declare variables to store two dates
    struct Date date1, date2;

    // Input details for the first date
    printf("Input details for Date 1 (day month year): ");
    scanf("%d %d %d", &date1.day, &date1.month, &date1.year);

    // Input details for the second date
    printf("Input details for Date 2 (day month year): ");
    scanf("%d %d %d", &date2.day, &date2.month, &date2.year);

    // Calculate and display the difference in days between the two dates
    int difference = dateDifference(date1, date2);
    printf("\nDifference in Days: %d\n", difference);

    return 0;
}

Output:

Input details for Date 1 (day month year): 01 01 2012
Input details for Date 2 (day month year): 01 01 2014

Difference in Days: 730

Explanation:

In the exercise above,

  • The "Date" structure is defined with members 'day', 'month', and 'year'.
  • The "daysInMonth()" function is used to calculate the number of days in a given month, considering leap years.
  • The "dateDifference()" function calculates the difference in days between two dates.
  • The program prompts the user to input details for two dates and then calculates and displays the difference in days between them.

Flowchart:

Flowchart: C Program Structure: Employee Management with Highest Salary.
Flowchart: C Program Structure: Employee Management with Highest Salary.

For more Practice: Solve these Related Problems:

  • Write a C program to input two dates and calculate the difference in days between them, accounting for leap years.
  • Write a C program to input an array of dates, sort them in chronological order, and display the sorted dates.
  • Write a C program to input a date and validate its correctness, ensuring proper day, month, and year values.
  • Write a C program to input a date and compute the number of days remaining until the end of the year.

Go to:


PREV : Employee Structure Processing.
NEXT : Queue Implementation with Structures.

C Programming Code Editor:



Have another way to solve this solution? Contribute your code (and comments) through Disqus.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.