Ruby字符串到日期的转换


73

我在Ruby on Rails中遇到了一个问题。我想将格式字符串转换Tue, 10 Aug 2010 01:20:19 -0400 (EDT)为日期对象。

无论如何,我可以做到这一点。

这是我所寻找并尝试的以下方法,但是没有运气:

  1. Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
  2. 慢性解析器
  3. Ruby:将字符串转换为日期
  4. 使用Ruby从文本解析日期

这个你能帮我吗。

Answers:


135

Date.parse方法有什么问题?

str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)"
date = Date.parse str
=> #<Date: 4910837/2,0,2299161>
puts date
2010-08-10

它似乎有效。

唯一的问题是时区。如果您想在UTC时区设置日期,那么最好使用Timeobject,假设我们有以下字符串:

str = "Tue, 10 Aug 2010 01:20:19 +0400"
puts Date.parse str
2010-08-10
puts Date.parse(Time.parse(str).utc.to_s)
2010-08-09

我找不到更简单的方法来转换TimeDate


谢谢克莱和瑞安。这就像一个魅力。我知道Date.parse,但是没有使用它。对我来说这是一个学习。
dkris

1
Ruby 1.9具有Time#to_date可以将时间转换为日期。
steenslag

如果我在日/月/年中需要它怎么办,例如:16/10/2015?
杰克逊·杰加泰森

15
Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")

应该:

Date.strptime(updated, '%a, %d %b %Y %H:%M:%S %Z')


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.