C Program to Calculate Difference Between Two Time Periods

Updated on December 12, 2024
Calculate difference between two time periods header image

Introduction

Calculating the difference between two time periods is a common programming task that can have applications in numerous domains like timing operations, performance measurement, or even in simple day-to-day algorithms that require time handling. In C programming, dealing with time involves understanding structures and basic arithmetic, as the language does not have built-in high-level time manipulation functions like some modern languages.

In this article, you will learn how to write a C program that accurately calculates the difference between two given time periods. You'll explore defining time structures, subtracting these times, and handling cases where subtraction might involve borrowing from higher time units.

Defining the Time Structure

Declare a Custom Time Structure

  1. Start by defining a struct in C to represent time. The structure includes hours, minutes, and seconds.

    c
    typedef struct {
        int hours;
        int minutes;
        int seconds;
    } Time;
    

    This code defines a Time structure with three integers representing hours, minutes, and seconds respectively.

Calculate Difference Between Two Times

Function to Subtract Two Times

  1. Create a function that takes two Time structures as arguments and returns the difference as a Time structure.

    c
    Time subtractTime(Time t1, Time t2) {
        Time difference;
        while (t2.seconds > t1.seconds) {
            --t1.minutes;
            t1.seconds += 60;
        }
        difference.seconds = t1.seconds - t2.seconds;
        while (t2.minutes > t1.minutes) {
            --t1.hours;
            t1.minutes += 60;
        }
        difference.minutes = t1.minutes - t2.minutes;
        difference.hours = t1.hours - t2.hours;
        return difference;
    }
    

    This code objectively subtracts t2 from t1. It handles the borrowing that becomes necessary when t2's seconds or minutes exceed t1's.

Implementing the Time Difference Calculator

Complete Program with User Input and Output

  1. Finally, piece together a simple program that uses your time structure and subtraction function. The program prompts the user for two times and then calculates and displays their difference.

    c
    #include <stdio.h>
    
    typedef struct {
        int hours;
        int minutes;
        int seconds;
    } Time;
    
    Time subtractTime(Time t1, Time t2);
    
    int main() {
        Time t1, t2, difference;
    
        printf("Enter start time (hours minutes seconds): ");
        scanf("%d %d %d", &t1.hours, &t1.minutes, &t1.seconds);
    
        printf("Enter stop time (hours minutes seconds): ");
        scanf("%d %d %d", &t2.hours, &t2.minutes, &t2.seconds);
    
        difference = subtractTime(t1, t2);
    
        printf("Time Difference: %d:%d:%d - ", t1.hours, t1.minutes, t1.seconds);
        printf("%d:%d:%d = %d:%d:%d\n", t2.hours, t2.minutes, t2.seconds,
                difference.hours, difference.minutes, difference.seconds);
    
        return 0;
    }
    

    This encompasses the entire C program to read start and stop times from the terminal, compute their difference using the subtractTime function, and display the results.

Conclusion

Embedding basic time operations inside a C program involves more manual management and arithmetic compared to other languages. By defining suitable structures and functions to manipulate these structures, you ensure your programs can effectively handle time-related tasks. The technique shown here is versatile and fundamental, making it applicable in numerous scenarios where time difference calculation is required. Use this foundational knowledge to expand further into more complex time handling and performance measurement tasks in your C applications.