ruby-on-rails - 确定日期/时间字符串中是否存在时间值
问题描述
我正在寻找一种方法,它将接受一个字符串并给我
- 如果字符串中提供了时间值,则为日期时间值
- 如果字符串中仅提供日期,则为一天结束时的日期时间值
我可以[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
我错过了什么吗?有没有更好的方法来转换输入,以便我知道是否提供了时间值?
解决方案
这可能会帮助您:
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
推荐阅读
- sql - 如何在 SELECT 中为数据类型地理、几何、图像和 XML 创建不可为空的虚拟字段?
- ruby-on-rails - 预订网站的 4 个模型之间的关联
- django - AttributeError 处理完视图
- lotus-notes - 添加/编辑文档后查看“$LDAPRDNHier”未更新
- android - Android:无法加载从相机保存的照片
- javascript - Wold press 迁移到新服务器会产生很多错误
- python - 如何使用 assertRaises() 引发错误
- javascript - 用户关闭浏览器选项卡时如何显示弹出窗口?
- axios - 将默认数据添加到 Axios 请求
- php - 我们如何在 laravel 的 select() 中使用 count() 和条件 sql?