12小时制零点半【是】12:30 AM【不是】00:30 AM!
结论概述
汉语凌晨零点半
0:30,使用英文12小时制写法:
- ✅12:30 AM
- ❌00:30 AM
对比展示:
24小时制写法 | 正确12小时制写法 | 错误写法 | 误区原因 | |
---|---|---|---|---|
凌晨0:30 | 00:30 | 12:30 AM | 00:30 AM | 混淆24小时制与12小时制的数字规则 |
中午12:30 | 12:30 | 12:30 PM | 00:30 PM | 误将正午后的时间归为AM时段 |
核心原因总结
小时数字范围
在英语12小时制中,其小时数字范围是 1至12,而非0至11、更非0至12。
与之对应的,24小时制的数字范围为0至23(起点是0而不是1)。
AM/PM的定义界限
12:00 AM 对应午夜(midnight),12:00 PM 对应正午(noon)。
AM时段覆盖 12:00 AM(午夜、凌晨)至11:59 AM,而 PM时段覆盖 12:00 PM(正午)至11:59 PM。
英语表述(可略过)
AM 是指上午,PM 也就是下午。
a.m.是拉丁文短语ante meridiem的缩略词,意为before noon(上午)。
p.m.是拉丁文短语post meridiem的缩略词,意为afternoon (下午,午后);
而 AM 与 PM 的分界线正是一天的正午—— noon。
例句:
Nothing or nobody is that important to be the reason why you can't sleep after 12AM.
没有任何事,任何人会重要到需要你过了半夜12点还苦想不睡。
基础表达方式
- 直接读数字(采用"钟点+分钟+AM"结构)
- 12:30 AM → twelve thirty AM
- 此为最简洁、通用的表达方式,适用于正式和非正式场合。
- 介词表达法(使用"分钟 + past + 钟点 + AM"结构描述半小时内时间)
- Thirty past twelve AM → 12点过30分(凌晨)
- Half past twelve AM → 12点半(凌晨)
- 此结构更强调时间的“经过”状态。
应用示例
火车时刻表:Departure at 12:30 AM(凌晨12:30发车)
日常对话:Let's meet at half past twelve AM(凌晨12点半见面)
正式场合:航班时刻表标注为 12:30 AM(避免歧义),在书面或需精确表述时必须保留。
口语简化:日常对话中可省略AM,直接说“twelve thirty”,仅通过上下文判断时段。
时间范围展开列举
- 12:00 AM = 凌晨 0 点(24 小时制的
00:00
) - 12:XX AM = 凌晨 0 点 XX 分(如
12:48 AM
=00:48
) - 1:00 AM – 11:59 AM = 凌晨 1 点至中午 12 点前
- 12:00 PM = 中午 12 点(对应
12:00
) - 12:XX PM – 11:59 PM = 下午 12 点 XX 分至晚上 23:59
Linux系统里的时制
不同的语言环境会使用不同的时间格式。例如,美国英语(en_US)倾向于使用12小时制,而大部分欧洲语言使用24小时制。
使用
date
命令查看当前系统时间格式:- 输出格式如Wed Jun 14 15:30:45 CST 2023表示使用24小时制。
- 输出格式如Wed Jun 14 03:30:45 PM CST 2023表示使用12小时制。
使用
locale | grep LC_TIME
命令查看系统语言环境设置:- 特别注意LC_TIME变量,它决定时间显示格式。
- 比如输出
LC_TIME="en_US.UTF-8"
,那一般对应12小时制的时间格式
使用
timedatectl
命令查看当前时区设置:
# 说明系统默认的底层时间格式是 24 小时制
Local time: Mon 2025-05-19 17:55:06 CST
Universal time: Mon 2025-05-19 09:55:06 UTC
RTC time: Mon 2025-05-19 09:55:06
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
结论
- 当前系统底层使用的是 24 小时制。
- 某些命令(如
date
)可能根据区域设置(LC_TIME
)显示为 12 小时制。
固定使用24小时制
如果是基于linux内核的centos类系统,全局区域设置通过执行sudo nano /etc/locale.conf
。编辑该文件:
# 添加或修改以下内容:
LANG=en_US.UTF-8
LC_TIME=en_DK.UTF-8
保存并退出,需要重新登录才能生效。
验证
使用date
命令查看当前系统时间格式:
date
2025-05-19T18:16:13 CST
已成功切换为24小时制
软件、脚本案例
acme.sh自动化数字证书
官网:acme.sh
其中的日志文件会使用系统默认的date命令脚本,在日志里打印时间。具体见脚本acme.sh里的:
_printargs() {
_exitstatus="$?"
if [ -z "$NO_TIMESTAMP" ] || [ "$NO_TIMESTAMP" = "0" ]; then
printf -- "%s" "[$(date)] "
fi
......
}
由此可见,日志里打印时间的时制完全取决于当前运行环境。