我正在尝试弄清楚如何将字符串转换为时间格式,前提是它的格式不正确。
我当前的设置:
我有一个保存前的回调
before_save :format_time
def format_time
self.from_time = from_time.to_time.strftime("%H %M")
self.to_time = to_time.to_time.strftime("%H %M")
end
这是格式化用户输入时间的两个字符串。
如果用户输入 2:00 PM
,回调会将其保存为 14 00
问题是如果用户更新模型,回调会将 14 00
变成 00 00
因此,我想检查格式是否已经是它应该的样子。不确定解决此问题的最佳方法。谢谢!
最佳答案
试试这个:
before_save :format_time
def format_time
self.from_time = sanitize_time( from_time )
self.to_time = sanitize_time( to_time )
end
def sanitize_time( time_str )
begin
DateTime.strptime(time_str, '%H %M') # will raise ArgumentError if not in '%H %M' format
time_str
rescue ArgumentError
time_str.to_time.strftime("%H %M")
end
end
关于ruby-on-rails - Rails 4 - 将字符串转换为时间格式,除非格式已经正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34804037/