我经常从网站上抓取并存储一些过时数据到rails应用程序,但网站上给出的日期采用以下格式:
11/25/2012 01
这是日期和时间。
我需要编写一些代码将其转换为默认的DateTime格式:
YYYY-MM-DD HH:MM:SS
但我是Ruby的新手。
这是我目前使用Nokogiri抓取包含日期的元素并提取文本的代码,也许你可以建立起来:
datedata = tr.css('td')[0].text
这会擦除日期表行并提取文本。例如,datedata = "11/25/2012 01"
是否有一种方法可以将datedata
转换为默认的DateTime格式以保存到数据库中?仅供参考 - 小时是唯一给出的时间,它们是我用例的必要数据,没有分钟或秒。
答案 0 :(得分:3)
[1] pry(main)> DateTime.strptime("11/25/2012 01", "%m/%d/%Y %H")
=> Sun, 25 Nov 2012 01:00:00 +0000
这应该足以传递给ActiveRecord,但是如果要将其转换为您在问题中提到的SQL日期时间字符串,则可以使用带有:db
选项的Rails to_formatted_s
。 / p>
[2] pry(main)> DateTime.strptime("11/25/2012 01", "%m/%d/%Y %H").to_formatted_s(:db)
=> "2012-11-25 01:00:00"
答案 1 :(得分:0)
我会用慢性病:
require 'chronic'
datedata = "11/25/2012 01"
Chronic.parse datedata
#=> 2012-11-25 13:00:00 0800
嗯,13:00似乎不对,让我们试试:
Chronic.parse "#{datedata}:00"
#=> 2012-11-25 01:00:00 0800
那更好。
答案 2 :(得分:-1)
一点点暗示。当您的用户从不同时区输入日期时,您会得到许多令人作呕的错误。我使用的通用规则:以UTC格式存储数据库中的时间。这很简单:时间对象有.utc
方法。用户应该设置他的时区,因此可以轻松计算用户的本地偏移量。