为什么strtotime转换12小时制时间为24小时制时结果不符合预期?
strtotime转换12小时制时间结果不符的原因
你得到的0:40:22是strtotime按标准规则转换的正常输出,核心原因是12小时制的AM/PM对应规则容易产生误解:
- 12小时制规范中,午夜12点到凌晨1点前的时段标注为12:XX AM,对应24小时制的
0:00:00 ~ 0:59:59 - 中午12点到下午1点前的时段标注为12:XX PM,对应24小时制的
12:00:00 ~ 12:59:59
你的输入字符串"12:40:22AM"会被strtotime解析为当天凌晨0点40分22秒,配合date("G:i:s")中G的格式定义(24小时制不带前导零的小时值),最终输出0:40:22,转换逻辑本身没有问题。
如果你的实际需求是表示中午12点40分22秒,将输入字符串中的AM修改为PM即可得到输出12:40:22;如果需要小时值带前导零,将格式字符G替换为H即可输出00:40:22。
内容的提问来源于stack exchange,提问作者PramodA
相关产品推荐
相关产品推荐

