You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elixir/Phoenix使用Timex库获取当前时间的格式化问题

嗨,这个问题我太熟悉了!其实完全不用自己手动判断补零,Timex本身就提供了原生的格式化工具来搞定这个需求,给你分享两种实用的方法:

方法1:用Timex的格式化函数直接生成带前置零的分量

Timex的Timex.format!/3(或者Timex.format/3,前者直接返回结果,后者返回{:ok, result}或{:error, reason})支持标准的strftime格式符,能自动给小于10的时间分量补零。比如:

# 先获取当前时间
time = Timex.now()

# 获取两位带前置零的分钟数
Timex.format!(time, "%M", :strftime)
# 当分钟是5时,输出:"05"

# 获取两位带前置零的24小时制小时
Timex.format!(time, "%H", :strftime)
# 比如凌晨3点会输出:"03"

# 获取两位带前置零的秒数
Timex.format!(time, "%S", :strftime)
# 秒数是7时输出:"07"

这里的%M、%H、%S都是标准的strftime格式标记,专门对应两位数字的分钟、24小时制小时、秒,完全不用自己处理补零逻辑,库已经帮你做好了。

方法2:简洁的手动补零(备选方案)

如果你只是想基于已经提取的数值(比如time.minute)来补零,也可以用Elixir原生的String.pad_leading/3来实现,比手动判断长度更简洁:

time = Timex.now()
String.pad_leading(Integer.to_string(time.minute), 2, "0")
# 同样会输出"05"当分钟是5的时候

不过这个方法本质还是手动补零,显然第一种用Timex原生格式化的方式更优雅,也更符合“最优解”的要求。

另外补充一下,Timex支持的strftime格式符还有很多,比如%I对应两位的12小时制小时,%p对应AM/PM标记,你可以根据自己的需求灵活选择。

内容的提问来源于stack exchange,提问作者Денис Корх

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:46:27