YAML时长数字格式规则是什么?属规范还是扩展实现?
YAML中
hh:mm:ss格式被解析为秒数的原因 这不是YAML核心规范定义的行为,而是以PyYAML为代表的主流实现添加的扩展类型解析逻辑。
核心规范说明
YAML 1.2及更早版本的官方规范里,并没有规定无引号的h:mm:ss格式字符串需要自动转换为秒数。按照规范,这类未加类型标签的冒号分隔内容,默认应被解析为普通字符串。
主流实现的扩展逻辑
像PyYAML这类库默认启用了额外的类型识别规则,其中包含对时间间隔格式的解析:
- 当字符串是无前导零的小时/分钟开头的
h:mm:ss或mm:ss格式时,会被自动识别为时间间隔,转换为对应的总秒数整数(比如1:00:00计算为3600秒,30:00计算为1800秒)。 - 一旦小时或分钟部分带有前导零(比如
01:00:00、00:30:00),就不会触发这个解析规则,会被保留为原始字符串。
强制保留字符串的方法
如果需要让这类格式始终被解析为字符串,只需给值添加单引号或双引号:
value_1: "1:00:00" value_2: '01:00:00'
转换为JSON后就会得到预期的字符串结果:
{ "value_1": "1:00:00", "value_2": "01:00:00" }
内容的提问来源于stack exchange,提问作者kjschiroo
相关产品推荐
相关产品推荐

