2012-04-16 95 views
2

如何將「04/16/2012 03:44:26」字符串轉換爲ruby中的datetime對象?ruby​​中的日期時間

我知道「20120416」可以通過DateTime.parse(srting)轉換爲datetime對象。

請幫我轉換「04/16/2012 03:44:26」到日期時間對象的紅寶石。我需要將x分鐘添加到上面的日期時間對象。

+0

的Ruby版本1.8.7 – AJJ 2012-04-16 11:09:38

回答

3

你需要使用的DateTime#strptime指定格式:

DateTime.strptime("04/16/2012 03:44:26", '%m/%d/%Y %H:%M:%S') 

參見:http://ruby-doc.org/stdlib-1.8.7/libdoc/date/rdoc/DateTime.html#method-c-strptime

您可以添加x分鐘,像這樣:+ (x/(24 * 60.0))

如果您使用Rails或使用的ActiveSupport有沒有問題,你可以這樣做:

require 'active_support' 
new_datetime = datetime + 10.minutes 
+0

tats罰款..它的工作..我如何添加x分鐘日期時間對象在紅寶石1.8.7? – AJJ 2012-04-16 11:24:44

+0

您可以像這樣添加x分鐘:'+(x /(24 * 60.0))'。但是,這是純Ruby風格,您應該使用ActiveSupport。 – knsmr 2012-04-16 11:35:14

+0

謝謝..我使用紅寶石進行一些自動測試..所以爲了驗證一些thinf我需要日期時間轉換。由於我不使用ruby進行開發,因此我不喜歡在這裏使用ActiveSupport ..感謝您的幫助..它提供了更多我未知的信息。 – AJJ 2012-04-16 11:37:47

3
(Time.parse("04/16/2012 03:44:26") + 10.minutes).to_datetime 

UPDATE

作品甚至用Ruby 1.8.7,但你必須需要的ActiveSupport(Rails中自動使用)。

+0

抱歉..它不工作..我使用Ruby 1.8.7。忘了提及這個問題。你的代碼在ruby 1.8.7中拋出「NoMethodError:10:Fixnum的未定義方法'分鐘數」。謝謝。如果有任何紅寶石解決方案,IT將會非常棒1.8.7 – AJJ 2012-04-16 11:09:19

+1

嘗試用'600'代替'10.minutes'。 – 2012-04-16 11:28:10

+0

謝謝..那有效.. – AJJ 2012-04-16 11:31:28