大家好,Rails 中如何设置 created_at 等时间对象的 to_s 方法的默认显示值. 我的当前是 '2016-02-3 12:33:1 UTC' 如何变为自定义格式 ?
XY 问题,不如直接定义一个 helper 方法来格式化时间:
def format_time(time)
time.strftime("%Y-%m-%d %H:%M")
end
def format_date(time)
time.strftime("%Y.%m.%d")
end
如果想要全局自动化,在 enviornment 文件里设置
my_datetime_formats = { :default => "%Y-%m-%d %H:%M:%S" }
my_date_formats = { :default => '%Y-%m-%d' }
Time::DATE_FORMATS.merge!(my_datetime_formats)
Date::DATE_FORMATS.merge!(my_date_formats)
@flemon1986 正解。虽然可以改默认行为,但用自定义的格式更灵活且无风险。补个文档 ActiveSupport::TimeWithZone#to_s
放 initialiser 文件里吧。。。
# config/initializers/time_formats.rb
my_datetime_formats = { :default => "%Y-%m-%d %H:%M:%S" }
my_date_formats = { :default => '%Y-%m-%d' }
Time::DATE_FORMATS.merge!(my_datetime_formats)
Date::DATE_FORMATS.merge!(my_date_formats)
# 把这行放到init文件里
Time::DATE_FORMATS[:db2] = '%Y-%m-%d %H:%M:%S'
# 也可以覆盖默认的
Time::DATE_FORMATS[:default] = '%Y-%m-%d %H:%M:%S'
# 然后
created_at.to_s(:db2)
#或者
created_at.to_s