假设您的军事时间存储为int
0000..2400 范围内的值,那么以下函数将返回两个此类值之间的差。
#include <cassert>
extern int timediff_minutes(int t1, int t2);
int timediff_minutes(int t1, int t2)
{
assert(t1 >= 0 && t1 <= 2400);
assert(t2 >= 0 && t2 <= 2400);
assert(t1 % 100 < 60 && t2 % 100 < 60);
int t1_mins = (t1 / 100) * 60 + (t1 % 100);
int t2_mins = (t2 / 100) * 60 + (t2 % 100);
return(t2_mins - t1_mins);
}
请注意,2400 可用于表示一天的结束 - 并且 ISO 8601:2004 认可使用 2400数据元素和交换格式 - 信息交换 - 日期和时间的表示。
4.2.3 午夜
根据 4.2.2,午夜的基本和扩展格式的完整表示应以下列两种方式之一表示:
Basic format Extended format
a) 000000 00:00:00 (the beginning of a calendar day)
b) 240000 24:00:00 (the end of a calendar day)
根据 4.2.2.3,表示可能具有降低的精度,或者可以根据 4.2.2.5 指定为时间表达式。为了表示午夜,可以根据 4.2.2.4 用仅包含零的小数来扩展表示。
注 1 午夜通常表示为 [00:00] 或 [24:00]。
注 2 一个日历日的结束 [24:00] 与下一个日历日的开始 [00:00] 重合,例如 1985 年 4 月 12 日的 [24:00] 与 13 日的 [00:00] 相同1985 年 4 月。如果与日期或时间间隔没有关联,则 a) 和 b) 在 24 小时计时系统中表示相同的本地时间。
注 3 表示 a) 或 b) 的选择将取决于与日期或时间间隔的任何关联。[hh] 具有值 [24] 的表示仅优选表示根据 4.4 的时间间隔的结束或根据 4.5 的重复时间间隔。