Jinja中基于ISO8601时间按6小时跨度划分的格式化方法咨询
解决方案
要实现按6小时跨度划分时间并添加对应编号的需求,你可以在原有日期格式化的基础上,结合时间的小时数做整数除法计算,具体写法分两种场景:
如果你是在Python代码中直接处理:
# 假设time是已经解析好的datetime对象 formatted_time = f"{time.strftime('%Y-%m-%d')}_{time.hour // 6}"
如果你是在模板引擎(比如Jinja2,对应你用的{{ }}语法)中使用:
{{ time.strftime('%Y-%m-%d') }}_{{ time.hour // 6 }}
逻辑解释:
- 原有部分
time.strftime('%Y-%m-%d')负责生成你需要的日期字符串(比如2018-01-23) time.hour会提取时间中的小时数(比如你的例子里是8)- 整数除法
// 6会把小时数映射到对应的6小时块:- 00:00-06:00 →
0(第一个6小时跨度) - 06:00-12:00 →
1(第二个6小时跨度,对应你的示例场景) - 12:00-18:00 →
2(第三个6小时跨度) - 18:00-24:00 →
3(第四个6小时跨度)
- 00:00-06:00 →
- 最后用下划线
_将日期和块编号拼接,得到你想要的格式。
示例验证:
当time = 2018-01-23T08:11:58.000000时:
- 日期部分输出
2018-01-23 - 小时数
8除以6取整得到1 - 最终拼接结果为
2018-01-23_1,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Shaharyar
相关产品推荐
相关产品推荐

