ruby 将字符串转换为日期时间

kxxlusnw  于 2023-01-12  发布在  Ruby
关注(0)|答案(8)|浏览(148)

我需要将以下字符串解析为DateTime对象:
30/Nov/2009:16:29:30 +0100
有简单的方法吗?

  • PS:* 我想把上面的字符串转换成原样,年份后面的冒号不是错字,我也想用Ruby而不是RoR来解决问题。
z9ju0rcb

z9ju0rcb1#

这难道不应该也适用于Rails吗?

"30/Nov/2009 16:29:30 +0100".to_datetime
bkkx9g8r

bkkx9g8r2#

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

vuktfyat

vuktfyat3#

我曾成功地:

require 'time'
t = Time.parse(some_string)
g9icjywg

g9icjywg4#

如果使用Rails,这会将date中的字符串转换为datetime:

"05/05/2012".to_time

文件参考:https://apidock.com/rails/String/to_time

4bbkushb

4bbkushb5#

我使用了Time.parse("02/07/1988"),就像其他一些海报一样。
一个有趣的问题是,当我打开IRB时,默认加载了Time,但是没有定义Time.parse,我必须使用require 'time'才能使它工作。
这是Ruby 2.2的情况。

jogvjijk

jogvjijk6#

将字符串转换为日期:

# without timezone
DateTime.strptime('2012-12-09 00:01:36', '%Y-%m-%d %H:%M:%S')
=> Sun, 09 Dec 2012 00:01:36 +0000

# with specified timezone
DateTime.strptime('2012-12-09 00:01:36 +8', '%Y-%m-%d %H:%M:%S %z')
=> Sun, 09 Dec 2012 00:01:36 +0800

参考:https://ruby-doc.org/stdlib-3.1.1/libdoc/date/rdoc/Date.html

mqxuamgl

mqxuamgl7#

在Ruby1.8中,ParseDate模块可以转换这个和许多其他的日期/时间格式。2但是,它不能很好地处理年份和小时之间的冒号。3假设冒号是一个输入错误,实际上是一个空格,那么:

#!/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
ukqbszuj

ukqbszuj8#

您也可以使用给定时区解析日期时间字符串:

zone = "Pacific Time (US & Canada)"
ActiveSupport::TimeZone[zone].parse("2020-05-24 18:45:00")
=> Sun, 24 May 2020 18:45:00 PDT -07:00

相关问题