Ruby on rails Rails 4-将字符串转换为时间格式,除非格式已经正确

Ruby on rails Rails 4-将字符串转换为时间格式,除非格式已经正确,ruby-on-rails,ruby,ruby-on-rails-4,callback,Ruby On Rails,Ruby,Ruby On Rails 4,Callback,我试图找出只有在字符串格式不正确的情况下,如何将其转换为时间格式 我当前的设置: 我有一个保存前回调 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,则回调将其保存为

我试图找出只有在字符串格式不正确的情况下,如何将其转换为时间格式

我当前的设置:

我有一个保存前回调

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