Rails日期格式化问题:UTC日期转日/月/年格式
Rails日期格式转换:UTC转日/月/年
嘿,这个问题在Rails里其实有好几种简单可行的解决方式,我给你列几个常用方案:
直接使用Ruby的
strftime方法
Rails中的日期/时间对象本质是Ruby的Time/DateTime实例,所以可以直接调用strftime来定制格式。假设你的变量是@your_date,代码如下:@your_date.strftime("%d/%m/%Y")这里的占位符含义:
%d:两位数字的日期(比如21)%m:两位数字的月份(比如03)%Y:四位数字的年份(比如2018)
执行后就会输出21/03/2018这样的格式。
用Rails本地化方法(更优雅的实践)
如果你的项目需要支持多语言或者统一管理日期格式,推荐用Rails的本地化功能:- 先在对应的语言配置文件(比如
config/locales/zh-CN.yml)里添加自定义格式:zh-CN: date: formats: day_month_year: "%d/%m/%Y" - 然后在视图里用
l(localize的简写)方法调用:l @your_date, format: :day_month_year
这种方式的好处是后续修改格式或者切换语言时,只需要调整配置文件,不用改动业务代码。
- 先在对应的语言配置文件(比如
注意时区处理
你的原始日期是UTC格式,Rails会自动根据项目配置的时区(config/application.rb里的config.time_zone)转换成本地时间。如果想要强制使用UTC时间格式化,可以先显式转换:@your_date.utc.strftime("%d/%m/%Y")要是项目时区已经设置正确,直接用前面的方法就好,Rails会帮你处理时区转换。
内容的提问来源于stack exchange,提问作者THOMAS Corentin
相关产品推荐
相关产品推荐

