加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Ruby检查datetime是否为iso8601并保存

发布时间:2020-12-17 02:48:40 所属栏目:百科 来源:网络整理
导读:我需要检查DateTime是否采用有效的ISO8601格式. 喜欢:#iso8601? 我检查了ruby是否有特定的方法,但我没有找到任何方法. 目前我正在使用date.iso8601 == date来检查这个. 有没有办法做到这一点? 编辑 解释我的环境,并改变问题的范围. 所以,我的项目将使用js
我需要检查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

这比你的“date.iso8601 == date”更冗长.但我发布它是因为不明白你的方法是如何工作的.对我来说date.iso8601 == date总是假的.我错了吗?

UPDATE

作为更新问题的答案,最好只能将DateTime存储在数据库中,并调用iso8601方法获取ISO8601字符串.要创建DateTime,只需使用Time.iso8601将输入字符串解析为DateTime对象.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读