在Jekyll的上下文中,YAML对象的正确时间格式是什么



格式yyyy-mm-dd将字符串解析为Date对象,但yyyy-mm-dd hh:mm不解析(它将其保持为字符串(。如果某些日期被解析为Date对象,而某些则被解析为字符串,则sort函数不接受此字段。

我的日期/时间字段不在前面的内容中,只是在一些被定义为前面内容一部分的对象中。

是否有任何格式也包括时间并被解析为Date对象?(理想情况下,无需指定秒和时区信息;如果Jekyll从未将我的日期/时间转换为date对象,我也不会介意,但我不知道如何确保这一点(

要格式化DateTime,您需要包含与时间戳的YAML规范匹配的秒数

时间戳值表示单个时间点。这可以使用ISO8601格式的子集和W3C在datetime上提出的格式进行序列化。此外,为了增强可读性,还支持使用空白分隔的更宽松的格式。

如果省略了时区,则假定时间戳是以UTC指定的。时间部分可以完全省略,从而形成日期格式。在这种情况下,时间部分被假定为00:00:00Z(一天的开始,UTC(。

Jekyll使用SafeYAML进行解析,您可以看到此处使用的正则表达式

DATE_MATCHER = /A(d{4})-(d{2})-(d{2})Z/.freeze
TIME_MATCHER = /Ad{4}-d{1,2}-d{1,2}(?:[Tt]|s+)d{1,2}:d{2}:d{2}(?:.d*)?s*(?:Z|[-+]d{1,2}(?::?d{2})?)?Z/.freeze

示例

因此,为了使数据正确工作,您可以格式化为yyyy-mm-dd hh:mm:ss(使用strftime格式化%Y-%m-%d %H:%M:%S(;但是,请注意,如果没有指定区域,则将假定为UTC。

可能还有其他方法,比如通过"!ruby/object:DateTime"标记对象,但最简单的方法可能是只遵循YAML规范。

最新更新