如何在Liquid模板中将字符串转换为日期?含09011990格式示例
解决Liquid模板中8位日期字符串转可读日期格式的问题
嘿,这个需求我之前在项目里刚好碰到过!要把09011990这种MMDDYYYY格式的8位字符串转成September 1, 1990,核心思路是先拆分字符串提取月、日、年,再拼接成Liquid能识别的标准日期格式,最后用date过滤器格式化输出。
具体实现步骤
截取日期各部分:用Liquid的
slice过滤器按位置截取字符串,分别提取月份、日期、年份:slice:0,2:从索引0开始取2个字符 → 月份(比如09)slice:2,2:从索引2开始取2个字符 → 日期(比如01)slice:4,4:从索引4开始取4个字符 → 年份(比如1990)
拼接成标准日期格式:把截取的部分拼成
YYYY-MM-DD(Liquid的date过滤器对这种格式识别最稳定),再用date过滤器转成你要的样式。
完整代码示例
{% assign raw_date = "09011990" %} {% assign month = raw_date | slice: 0, 2 %} {% assign day = raw_date | slice: 2, 2 %} {% assign year = raw_date | slice: 4, 4 %} <!-- 先转成Liquid可识别的标准日期格式,再格式化 --> {% assign readable_date = year | append: "-" | append: month | append: "-" | append: day | date: "%B %-d, %Y" %} {{ readable_date }}
这段代码运行后会输出:September 1, 1990
补充说明
date过滤器的格式参数:%B:输出完整的月份名称(比如September)%-d:不带前导零的日期数字(比如1而不是01,如果要保留前导零用%d)%Y:四位年份数字
- 如果你要处理的原始日期可能有格式不规范的情况(比如长度不是8位),可以加个判断做容错:
{% if raw_date.size == 8 %} <!-- 上面的格式化代码 --> {% else %} Invalid date format {% endif %}
内容的提问来源于stack exchange,提问作者abhi920124
相关产品推荐
相关产品推荐

