Vic*_*tos 5 ruby datetime ruby-on-rails iso8601
我需要检查DateTime是否采用有效的ISO8601格式.喜欢:#iso8601?
我检查了ruby是否有特定的方法,但我没有找到任何方法.目前我正在date.iso8601 == date检查这个.有没有办法做到这一点?
编辑
解释我的环境,并改变问题的范围.
所以,我的项目将使用js api FullCalendar,这就是我需要iso8601字符串格式的原因.我想知道它是更好或更正确的方式,以正确的格式保存数据库中的日期,或让ActiveRecord完成他们的工作并在我需要时间信息时操作它.
我不太明白你的问题.我假设你想检查一个DateTime字符串,如果它是一个有效的ISO8601格式日期字符串.如果我错了,请纠正我.
您可以使用类方法Time.iso8601和Date.iso8601.要使用它们,您需要从标准库中要求"日期"和"时间"库.一个警告是,从名称中可以看出,它们不是谓词方法(没有?),而是如果输入了错误的字符串,它们会引发带有"无效日期"消息的ArgumentError.因此,您需要添加一个开始救援块.例如.
require 'time'
t = Time.now
time_string = t.rfc2822 # intentionally set to wrong format string
begin
Time.iso8601(time_string)
puts "Yeah, correct string"
rescue ArgumentError => e
puts e
puts "Nah, wrong string"
end
Run Code Online (Sandbox Code Playgroud)
这比你的"date.iso8601 == date"更冗长.但我发布它是因为不明白你的方法是如何工作的.对我date.iso8601 == date来说永远是假的.我错了吗?
UPDATE
作为更新问题的答案,最好只能将DateTime正常存储在数据库中,并调用iso8601方法来获取ISO8601字符串.要创建DateTime,只需使用Time.iso8601将输入字符串解析为DateTime对象.
| 归档时间: |
|
| 查看次数: |
3077 次 |
| 最近记录: |