Ruby-检查日期时间字符串的格式是否正确



在ruby 3中,有什么干净的方法可以确认字符串日期时间的格式是否正确?示例输入为:

datetime = "2020-02-25T02:57:08.264Z"

我浏览了《时代》杂志的课程,找不到任何内置的方式,所以想知道我是否忽略了什么。

您可以尝试解析日期时间字符串,看看它是否会引发错误。这里有一个版本,它试图解析标准的ISO8601格式字符串。如果出现异常,则返回false;否则返回true。

def valid_time?(datetime)
Time.parse(datetime)
true
rescue
false
end
valid_time?("2020-02-25T02:57:08.264Z") # returns true
valid_time?("asdasd") # returns false

如果时间字符串是不同的格式,并且您事先知道格式,那么您可以使用strptime尝试相同的模式

def valid_time?(time_string, format)
Time.strptime(time_string, format)
true
rescue
false
end
valid_time?("12/32/2020", "%M/%d/%Y") # returns false
valid_time?("12/23/2020", "%M/%d/%Y") # returns true

最新更新