用c语言写两个24小时制时间相减的时间差,结果是小时和分钟的形式
时间: 2024-09-06 09:01:54 浏览: 67
C/C++获取(毫秒/微秒/纳秒级)系统时间差方法大全
5星 · 资源好评率100%
在 C 语言中,你可以使用 `struct` 结构体和 `%d` 格式化字符串来表示和计算时间差。下面是一个简单的例子,假设你有两个结构体 `time_t` 表示的时间:
```c
#include <stdio.h>
#include <time.h>
// 定义结构体来存储小时和分钟
typedef struct {
int hours;
int minutes;
} Time;
// 函数来获取当前时间
Time getCurrentTime() {
Time currentTime;
time_t now = time(NULL);
struct tm *ltm = localtime(&now);
currentTime.hours = ltm->tm_hour; // 小于24小时
currentTime.minutes = ltm->tm_min; // 小于60分钟
return currentTime;
}
// 函数将一个时间转换为24小时制
void convertTo24h(Time* time) {
if (time->hours >= 12) {
time->hours -= 12;
}
if (time->hours == 0) {
time->hours = 12;
}
}
// 计算并显示时间差
void calculateDifference(Time t1, Time t2) {
Time difference;
difference.hours = t2.hours - t1.hours;
difference.minutes = t2.minutes - t1.minutes;
// 如果分钟小于0,则加上一小时并调整分钟
if (difference.minutes < 0) {
difference.hours--;
difference.minutes += 60;
}
printf("时间差: %d:%02d\n", difference.hours, difference.minutes);
}
int main() {
Time startTime, endTime;
// 获取起始时间
startTime = getCurrentTime();
printf("请输入开始时间 (HH:MM): ");
scanf("%d:%d", &startTime.hours, &startTime.minutes);
// 获取结束时间
endTime = getCurrentTime();
printf("请输入结束时间 (HH:MM): ");
scanf("%d:%d", &endTime.hours, &endTime.minutes);
// 转换为24小时制
convertTo24h(&startTime);
convertTo24h(&endTime);
// 计算并显示时间差
calculateDifference(startTime, endTime);
return 0;
}
```
阅读全文