首页 > 解决方案 > 确定日期/时间字符串中是否存在时间值

问题描述

我正在寻找一种方法,它将接受一个字符串并给我

  1. 如果字符串中提供了时间值,则为日期时间值
  2. 如果字符串中仅提供日期,则为一天结束时的日期时间值

我可以[to_datetime][1]用来转换字符串,但我看不到是否提供了时间值的方法,因为00:00:00 +0000如果未提供值,则返回的 DateTime 将初始化为。

现在这是一个问题,因为to_datetime在我解析输入时给了我一个默认值。

"1-1-2012".to_datetime            # => Sun, 01 Jan 2012 00:00:00 +0000
"01/01/2012 23:59:59".to_datetime # => Sun, 01 Jan 2012 23:59:59 +0000

我错过了什么吗?有没有更好的方法来转换输入,以便我知道是否提供了时间值?

标签: ruby-on-railsrubydatedatetimetime

解决方案


这可能会帮助您:

date = '10/10/2000'
result = begin
           DateTime.strptime(date, '%d/%m/%Y %H:%M:%S')
         rescue ArgumentError => e
           DateTime.strptime(date, '%d/%m/%Y').at_end_of_day
         end

推荐阅读