解析日期时间字符串以转换为其他格式时,Ruby on Rails无效日期错误

马丁·卡林87

在我的Rails App(Rails 2.3.14和Ruby 1.8.7)中,我试图将日期时间字符串转换为其他格式,以便在MySQL数据库上执行搜索,但出现invalid date错误,而且似乎无法弄清楚为什么,我已经阅读了很多类似的问题,但是我似乎仍然无法解决问题。

# check if filter contains a time stamp
if params[:sSearch].include?('/') and params[:sSearch].include?(':')
  datetime = DateTime.strptime(params[:sSearch], "%Y-%m-%d %H:%M")
  params[:sSearch] = datetime
end

示例场景

04/11/13 16:14

应该转换为

2013-11-04 16:14

我认为可能与以下事实有关:秒数未包含在字符串的前端表示中,因为datetime数据库表中的精确度是多少,2013-11-04 16:14:52所以我现在加入了秒数,但仍然出现相同的错误,我没有我认为这无关紧要,因为我LIKE在搜索字词的两边都使用了带通配符操作数,因此即使没有秒,它也能正常工作。

帕特里克·奥斯西

您应使用斜杠格式,并将%Y(四位数年份)替换%y(缩写两位位数年份)以获得所需的结果。此外,日期字段的顺序颠倒了。正确的格式为:

"%d/%m/%y %H:%M"

我认为您混淆了strptime的目的strftimepstrptime看台上的“解析”(让DateTime来自String)时,fstrftime看台上的“格式”(另一方向)。

require 'date'

DateTime.strptime("04/11/13 16:14", "%Y-%m-%d %H:%M")
# ArgumentError: invalid date

DateTime.strptime("04/11/13 16:14", "%d/%m/%Y %H:%M")
#=> #<DateTime: 0013-11-04T16:14:00+00:00 ((1722836j,58440s,0n),+0s,2299161j)>
# Wrong! You do not want the year 0013, but 2013

DateTime.strptime("04/11/13 16:14", "%d/%m/%y %H:%M")
#=> #<DateTime: 2004-11-13T16:14:00+00:00 ((2453323j,58440s,0n),+0s,2299161j)>
# Correct

您可以稍后将其转换为所需的格式,DateTime#strftime如下所示:

# parse the user input to a DateTime object
datetime = DateTime.strptime("04/11/13 16:14", "%d/%m/%y %H:%M")

# reformat it
params[:sSearch] = datetime.strftime("%Y-%m-%d %H:%M")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将日期字符串转换为其他格式的日期字符串

来自分类Dev

将日期字符串转换为其他格式的日期字符串

来自分类Dev

swift-将字符串转换为日期,然后转换为其他格式的字符串

来自分类Dev

Perl:将字符串中保存的日期转换为其他格式

来自分类Dev

PHP将SQL日期转换为显示为数字字符串的其他格式

来自分类Dev

在pandas数据框中将字符串日期转换为其他格式

来自分类Dev

将日期字符串转换为bash中的其他格式

来自分类Dev

没有格式解析是否可能将字符串转换为日期或时间戳

来自分类Dev

SQL日期时间转换为字符串格式

来自分类Dev

将GMT格式的字符串转换为日期时间

来自分类Dev

将字符串转换为不同的日期时间格式

来自分类Dev

通过解析将字符串转换为日期时间

来自分类Dev

在MySQL中将字符串转换为24小时日期时间格式

来自分类Dev

将字符串转换为24小时日期时间格式

来自分类Dev

使用dd / mm / yyyy格式将日期时间转换为字符串时出错

来自分类Dev

日期时间在转换为字符串时对只有一个用户的格式不同

来自分类Dev

如何将日期格式字符串转换为bool True,其他转换为False?

来自分类Dev

如何在pyspark中将日期时间从字符串格式转换为日期时间格式?

来自分类Dev

从字符串转换为日期时间时如何修复 ValueError 时间日期与格式不匹配

来自分类Dev

Ruby on Rails从日期时间解析时间,而不是字符串

来自分类Dev

日期格式器在转换为字符串Objective-C时给出错误的日期

来自分类Dev

JavaScript / jQuery-从24小时日期时间字符串转换为12小时日期格式?

来自分类Dev

将.NET日期/时间格式字符串转换为Javascript日期/时间格式字符串

来自分类Dev

将.NET日期/时间格式字符串转换为Javascript日期/时间格式字符串

来自分类Dev

用Java解析格式错误的日期时间字符串

来自分类Dev

在 SQL Server 中将日期时间字符串转换为日期时间格式

来自分类Dev

从日期时间到字符串格式的转换错误

来自分类Dev

在powershell中将字符串转换为格式化的日期时间时出错“字符串未被识别为有效的日期时间”

来自分类Dev

在Elixir中使用Timex解析日期字符串时出现“无效格式字符串”错误

Related 相关文章

  1. 1

    将日期字符串转换为其他格式的日期字符串

  2. 2

    将日期字符串转换为其他格式的日期字符串

  3. 3

    swift-将字符串转换为日期,然后转换为其他格式的字符串

  4. 4

    Perl:将字符串中保存的日期转换为其他格式

  5. 5

    PHP将SQL日期转换为显示为数字字符串的其他格式

  6. 6

    在pandas数据框中将字符串日期转换为其他格式

  7. 7

    将日期字符串转换为bash中的其他格式

  8. 8

    没有格式解析是否可能将字符串转换为日期或时间戳

  9. 9

    SQL日期时间转换为字符串格式

  10. 10

    将GMT格式的字符串转换为日期时间

  11. 11

    将字符串转换为不同的日期时间格式

  12. 12

    通过解析将字符串转换为日期时间

  13. 13

    在MySQL中将字符串转换为24小时日期时间格式

  14. 14

    将字符串转换为24小时日期时间格式

  15. 15

    使用dd / mm / yyyy格式将日期时间转换为字符串时出错

  16. 16

    日期时间在转换为字符串时对只有一个用户的格式不同

  17. 17

    如何将日期格式字符串转换为bool True,其他转换为False?

  18. 18

    如何在pyspark中将日期时间从字符串格式转换为日期时间格式?

  19. 19

    从字符串转换为日期时间时如何修复 ValueError 时间日期与格式不匹配

  20. 20

    Ruby on Rails从日期时间解析时间,而不是字符串

  21. 21

    日期格式器在转换为字符串Objective-C时给出错误的日期

  22. 22

    JavaScript / jQuery-从24小时日期时间字符串转换为12小时日期格式?

  23. 23

    将.NET日期/时间格式字符串转换为Javascript日期/时间格式字符串

  24. 24

    将.NET日期/时间格式字符串转换为Javascript日期/时间格式字符串

  25. 25

    用Java解析格式错误的日期时间字符串

  26. 26

    在 SQL Server 中将日期时间字符串转换为日期时间格式

  27. 27

    从日期时间到字符串格式的转换错误

  28. 28

    在powershell中将字符串转换为格式化的日期时间时出错“字符串未被识别为有效的日期时间”

  29. 29

    在Elixir中使用Timex解析日期字符串时出现“无效格式字符串”错误

热门标签

归档