繁体   English   中英

将字符串转换为日期时间

[英]convert String to DateTime

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

是否有捷径可寻?

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

这不应该也适用于 Rails吗?

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

DateTime.strptime允许您指定格式并将字符串转换为日期时间。

我在以下方面取得了成功:

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

如果使用Rails ,这会将日期中的字符串转换为日期时间:

"05/05/2012".to_time

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

我使用了Time.parse("02/07/1988") ,就像其他一些海报一样。

一个有趣的问题是,当我打开 IRB 时,默认情况下加载了Time ,但Time.parse没有定义。 我必须require 'time'才能让它发挥作用。

那是 Ruby 2.2。

对于中国 Rails 开发者:

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

在 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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM