军用时间转换器:24小时制转12小时制
在军用时间与标准时间之间进行转换。支持读取 2330、23:30 和晚上 11:30,并解释 0000 与 2400 的午夜,以及 12 AM 和 12 PM 的含义。
Military Time Converter
Type a time in either notation. The converter reads 2330, 23:30 and 11:30 PM, and writes the same reading in both.
The same time in both notations
文档
军用时间转换器
军用时间采用24小时制:小时编号从00到23,时间通常写成不带分隔符的四位数字,例如夜里十一点半写作2330。本页面可在这种记法与普通12小时制之间双向转换书面时间,并计算该时间距午夜的分钟数和小时数。
计算器的功能
转换器读取一个书面时间,并自行判断其采用哪种记法。带 AM 或 PM 标记表示12小时制。不带标记表示24小时制。这个规则解决了唯一一种两种记法看起来相同的情况:不带标记的12:30会被读作24小时制,即中午十二点半。
可接受的输入包括四位数字(2330)、三位数字(745)、仅小时(8)、冒号形式(23:30)、带标记的12小时制时间(11:30 PM、7 pm、11:30 p.m.),以及带口语后缀的形式(2330 hours、0800 hrs);读取数字前会移除这些后缀。在三位或四位数字的输入中,最后两位始终是分钟,因此745就是7:45。
结果会显示同一时间的三种书面形式,另加两种计数:四位数字的军用时间形式、同一时间的 HH:MM 形式、带 AM 或 PM 的12小时制形式、距午夜的分钟数,以及换算成小时后的数值。
如何将12小时制时间转换为军用时间
按照原来的形式取小时,将12替换为0;如果标记为 PM,则加上12。分钟始终不变。用符号表示:
其中,H 是24小时制中的小时,范围为0到23;h 是12小时制中写出的小时,范围为1到12;p 在 PM 时为1,在 AM 时为0。符号 mod 表示除法后的余数,因此12 mod 12等于0,7 mod 12等于7。
余数是整个方法的关键。一个表达式就能将12 AM 转换为小时0,并将12 PM 转换为小时12。如果手动分别写出两种情况,通常就在这里出错,因为它们看起来对称,实际上并不对称。
如何将军用时间转换为12小时制时间
反向转换时,小时再次取余数,但余数为0时写作12:
12 & \text{if } H \bmod 12 = 0 \\ H \bmod 12 & \text{否则} \end{cases}$$ 小时0到11使用 AM,小时12到23使用 PM。12小时制会去掉小时的前导零,但保留分钟的前导零,因此小时8、分钟5写作8:05 AM。 ### 距午夜的分钟数和小时数 本页面还会报告该时间在当天经过了多长时间。两个计数都来自同一个整数: $$t = 60H + m$$ $$T = \frac{t}{60}$$ 其中,*m* 是分钟,范围为0到59;*t* 是距午夜的分钟数,范围为0到1440;*T* 是相同时间量的小时表示。 小时卡片会将分钟数除一次,而不是把小数加到小时上。两种计算路径在39个1440读数上会不一致,因为计算机以二进制存储小数,而六十分之一没有精确的二进制表示。页面中只有这一次除法会产生小数,转换过程不依赖其数值。卡片显示四位小数,这足以区分全部1440个读数,因为一分钟约等于0.0167小时。 ### 算例 对于2330,页面读取的小时为23,分钟为30,且没有标记,因此输入是24小时制时间。 12小时制的小时为:23 mod 12等于11,而11不等于0,所以小时是11。小时23大于或等于12,所以标记为 PM。该时间是11:30 PM。 距午夜的分钟数:60乘以23等于1380,1380加上30等于1410。换算成小时:1410除以60等于23.5。 第二个例子反向进行。对于7:45 PM,标记使 *p* 为1,而7 mod 12等于7,所以小时是7加上12,即19。军用时间形式为1945,冒号形式为19:45。距午夜的分钟数:60乘以19等于1140,加上45等于1185,即19.75小时。 ### 常见转换 | 军用时间 | 24小时制 | 12小时制 | 距午夜的分钟数 | |---|---|---|---| | 0000 | 00:00 | 12:00 AM(午夜) | 0 | | 0600 | 06:00 | 6:00 AM | 360 | | 0800 | 08:00 | 8:00 AM | 480 | | 1200 | 12:00 | 12:00 PM(中午) | 720 | | 1330 | 13:30 | 1:30 PM | 810 | | 1800 | 18:00 | 6:00 PM | 1080 | | 2100 | 21:00 | 9:00 PM | 1260 | | 2330 | 23:30 | 11:30 PM | 1410 | | 2400 | 24:00 | 12:00 AM(午夜) | 1440 | ### 午夜:0000和2400 两种形式都在使用,且不能互换。ISO 8601为同一个日期规定了两个午夜,并以不同方式书写。00:00表示一天的开始,24:00表示一天的结束,后者与次日的00:00是同一时刻。需要避免歧义时,通常优先使用00:00。 本页面保留用户输入的形式。输入0000会返回0000,并说明为一天的开始;输入2400会返回2400,并说明为一天的结束。在12小时制中,两者都是12:00 AM,因为这种记法没有单独表示一天结束的写法。只有2400计作距午夜1440分钟。 2400形式只在分钟为零时接受。输入24:30会被拒绝,而不会悄悄转换为00:30;小时24也会在取余数前被捕获,因为如果将其与12比较,会把午夜标记为 PM。 关于两个午夜规则以及优先使用00:00的来源,是剑桥大学 Markus Kuhn 撰写的 ISO 8601摘要,该摘要依据 ISO 8601:2004编写。后续历史另行引用该标准本身的修订版:发布时的 ISO 8601-1:2019删除了24:00表示法,ISO 8601-1:2019/Amd 1:2022又将其恢复。 ### 12 AM 和12 PM 中午既不在自身之前,也不在自身之后,因此 a.m.(午前)和 p.m.(午后)这两个标签实际上并不适用于12:00。按照惯例,12 a.m. 表示午夜,12 p.m. 表示中午。《美国传统英语词典》、《加拿大新闻社风格手册》和 NIST 都建议改写为 noon 或 midnight,因为这两个标签的先后关系并不一目了然。来源:维基百科关于12小时制的文章。 本页面遵循这一建议,在两种读数中都将该词放在括号内,写作12:00 AM(午夜)和12:00 PM(中午),而不是让标签单独承担含义。 ### 哪些数字是精确的 转换中的每个数字都是对书面记法的定义,而不是测量值,因此不会因更好的实验而修订。 | 编号 | 数值 | 是否精确? | 来源 | |---|---|---|---| | 一天中的小时数 | 24 | 根据24小时制记法的定义精确确定 | 维基百科,《24小时制》 | | 一天每半段的小时数 | 12 | 根据12小时制记法的定义精确确定 | 维基百科,《12小时制》 | | 一小时中的分钟数 | 60 | 根据定义精确 | BIPM《国际单位制手册》9版:分钟为60 s,小时为60 min,二者都属于获准与 SI 一同使用的非 SI 单位 | | 一天中的分钟数 | 1440 | 精确确定,因为它等于24乘以60,且两个因数都精确 | 由上面两行推得 | 小时和分钟按整数读取,页面进行的每次比较也都在整数之间进行,因此没有任何答案由四舍五入的数值决定。 ### 转换器拒绝的输入 以下每种情况都会显示单独的消息,而不是猜测答案:空字段;页面无法读取的格式;包含秒的输入,例如12:30:45;大于59的分钟;超出1到12范围的12小时制小时,例如13:00 PM 或0:45 AM;以及大于23且不是2400形式的24小时制小时。 秒不在处理范围内。本页面转换的是不带日期的时钟读数,因此不附加日期、时区或 UTC 偏移量。 ### 常见问题 **2330按标准时间是几点?** 11:30 PM。小时23除以12的余数为11,而23大于或等于12,所以标记为 PM。 **如何将下午时间转换为军用时间?** 将小时加上12,分钟保持不变。以7:45 PM 为例:7加上12等于19,所以答案是1945。唯一的例外是12 PM,它仍写作小时12,因为12 mod 12等于0。 **午夜是0000还是2400?** 两种形式都在使用。ISO 8601将00:00视为日期的开始,将24:00视为日期的结束;两者表示相隔一天的同一时刻。需要避免歧义时,通常选择00:00。 **12 PM 是中午还是午夜?** 按照惯例,12 p.m. 表示中午,12 a.m. 表示午夜。由于这些标签容易引起混淆,多个风格指南建议改写为 noon 或 midnight,本页面也会将该词显示在括号中。 **12:30表示中午十二点半还是午夜十二点半?** 本页面将其读作中午十二点半,因为它不带 AM 或 PM 标记,因此按24小时制时间处理。要表示午夜十二点半,请输入12:30 AM 或0030。 **转换器能处理秒或时区吗?** 不能。它只转换小时和分钟,不附加日期、时区或偏移量。包含秒的输入会被拒绝,而不会截去秒数。