# C 程序：计算两个时间段之间的差异

> 原文： [https://www.programiz.com/c-programming/examples/time-structure](https://www.programiz.com/c-programming/examples/time-structure)

#### 在此示例中，您将学习使用用户定义的函数计算两个时间段之间的差。

要理解此示例，您应该了解以下 [C 编程](/c-programming "C tutorial")主题：

*   [C 用户定义的函数](/c-programming/c-user-defined-functions)
*   [C 结构](/c-programming/c-structures)
*   [C 结构和函数](/c-programming/c-structure-function)
*   [C 结构和指针](/c-programming/c-structures-pointers)

* * *

## 计算两个时间段之间的差异

```c
#include <stdio.h>
struct TIME {
   int seconds;
   int minutes;
   int hours;
};

void differenceBetweenTimePeriod(struct TIME t1,
                                 struct TIME t2,
                                 struct TIME *diff);

int main() {
   struct TIME startTime, stopTime, diff;

   printf("Enter the start time. \n");
   printf("Enter hours, minutes and seconds: ");
   scanf("%d %d %d", &startTime.hours,
         &startTime.minutes,
         &startTime.seconds);

   printf("Enter the stop time. \n");
   printf("Enter hours, minutes and seconds: ");
   scanf("%d %d %d", &stopTime.hours,
         &stopTime.minutes,
         &stopTime.seconds);

   // Difference between start and stop time
   differenceBetweenTimePeriod(startTime, stopTime, &diff);
   printf("\nTime Difference: %d:%d:%d - ", startTime.hours,
          startTime.minutes,
          startTime.seconds);
   printf("%d:%d:%d ", stopTime.hours,
          stopTime.minutes,
          stopTime.seconds);
   printf("= %d:%d:%d\n", diff.hours,
          diff.minutes,
          diff.seconds);
   return 0;
}

// Computes difference between time periods
void differenceBetweenTimePeriod(struct TIME start,
                                 struct TIME stop,
                                 struct TIME *diff) {
   while (stop.seconds > start.seconds) {
      --start.minutes;
      start.seconds += 60;
   }
   diff->seconds = start.seconds - stop.seconds;
   while (stop.minutes > start.minutes) {
      --start.hours;
      start.minutes += 60;
   }
   diff->minutes = start.minutes - stop.minutes;
   diff->hours = start.hours - stop.hours;
}
```

**输出**

```c
Enter the start time.
Enter hours, minutes and seconds: 12
34
55
Enter the stop time.
Enter hours, minutes and seconds: 8
12
15

Time Difference: 12:34:55 - 8:12:15 = 4:22:40 
```

* * *

在该程序中，要求用户输入两个时间段，这两个时间段分别存储在结构变量`startTime`和`stopTime`中。

然后，函数`differenceBetweenTimePeriod()`计算时间段之间的差。 结果从`main()`函数显示而不返回（使用**按引用调用**技术）。