将String转换为DateTime

Ska*_*Rat 93 ruby time parsing date

我需要将以下String解析为DateTime对象:
30/Nov/2009:16:29:30 +0100

是否有捷径可寻?

PS:我想按原样转换上面的字符串.年后的冒号不是拼写错误.我也想用Ruby而不是RoR解决问题.

Kal*_*see 94

DateTime.strptime允许您指定格式并将String转换为DateTime.

  • 用户提出的字符串转换示例是礼貌的,而不仅仅是"去读那里"(顺便提一下大量的信息).Stackoverflow的流行并不是因为它提供了外部文档的链接,而是提供了问题的答案 (6认同)
  • 有关可用格式缩写的列表,请访问https://gist.github.com/halloffame/5350249 (4认同)

xen*_*tek 88

这不也可以吗?

"30/Nov/2009 16:29:30 +0100".to_datetime
Run Code Online (Sandbox Code Playgroud)

  • 这也是Ruby on Rails方法,而不是Ruby方法. (53认同)
  • 这应该是:`require'active_support/all'`然后``30/Nov/2009 16:29:30 +0100".to_datetime`(你实际上并不需要所有的active_support扩展,但祝你好运找出哪些要求有选择地) (5认同)
  • 问题是关于"30/Nov/2009:16:29:30 +0100"而不是"30/Nov/2009 16:29:30 +0100".这是它不起作用的另一个原因. (3认同)
  • ActiveSupport的布局非常合理,但是为了产生最小的影响,这应该是将`to_datetime`添加到`String`对象所需的全部内容:`require'active_support/core_ext/string/conversions'` (2认同)

Aut*_*ico 43

我成功了:

require 'time'
t = Time.parse(some_string)
Run Code Online (Sandbox Code Playgroud)


dec*_*lan 15

Time.parse("02/07/1988")像其他一些海报一样使用过.

一个有趣的问题是,Time当我打开IRB时默认加载,但Time.parse没有定义.我不得不require 'time'让它上班.

这是Ruby 2.2.


小智 10

这会将日期中的字符串转换为datetime:

"05/05/2012".to_time
Run Code Online (Sandbox Code Playgroud)

  • 这是一个Ruby on Rails方法,而不是Ruby方法. (17认同)
  • 虽然这不是这个问题的答案,但它帮助了我很多。谢谢@user1425976 (2认同)

Siw*_*申思维 8

对于中国Rails开发人员:

DateTime.strptime('2012-12-09 00:01:36', '%Y-%m-%d %H:%M:%S')
=> Sun, 09 Dec 2012 00:01:36 +0000
Run Code Online (Sandbox Code Playgroud)


Way*_*rad 5

在Ruby 1.8中,ParseDate模块将转换此和许多其他日期/时间格式.但是,它不能优雅地处理年份和小时之间的冒号.假设冒号是一个拼写错误,实际上是一个空格,那么:

#!/usr/bin/ruby1.8

require 'parsedate'

s = "30/Nov/2009 16:29:30 +0100"
p Time.mktime(*ParseDate.parsedate(s))    # =>  Mon Nov 30 16:29:30 -0700 2009
Run Code Online (Sandbox Code Playgroud)