2011-10-09 95 views
0

我想轉換從肥皂服務返回的日期時間,看起來像這樣:「2011-09-30T11:25:56-05:00」。紅寶石皁日期時間解析錯誤

我想將它解析這個格式「2011-09-30 11點25分56秒」

當我硬編碼在我的Ruby代碼的datestring,它的工作原理:

def parse_date(datestring) 
    formattedDateTime = DateTime.strptime("2011-09-30T11:25:56-05:00", "%Y-%m-%dT%I:%M:%S%z") 
    dt = formattedDateTime.strftime("%Y-%m-%d %H:%M:%S") 

    return dt 
end 

這當我對日期字符串進行硬編碼時,該示例有效。但是,下面的示例不起作用。它使用的日期字符串是「2011-09-30T11:25:56-05:00」,與上面示例中的硬編碼完全相同。

def parse_date(datestring) 
    formattedDateTime = DateTime.strptime(datestring, "%Y-%m-%dT%I:%M:%S%z") 
    dt = formattedDateTime.strftime("%Y-%m-%d %H:%M:%S") 

    return dt 
end 

這樣,它拋出這個錯誤: [下午1點29分06秒2011-10-09] SourceAdapter提出查詢例外:私有方法'子」呼籲#

任何人都可以讓我知道發生了什麼事嗎?

回答

0

我想通了這個問題。我必須給to_s打電話,因爲我試圖解析的日期實際上不是字符串。

def parse_date(dateobject) 

    tempdatestring = dateobject.to_s 

    formattedDateTime = DateTime.strptime(tempdatestring, "%Y-%m-%dT%H:%M:%S%z") 
    dt = formattedDateTime.strftime("%Y-%m-%d %H:%M:%S") 

    return dt 
end 
0

我無法複製此問題。這個方法調用和定義的範圍是什麼?

沒有更多的信息,幾乎不可能告訴你的問題是什麼,但看到下面的猜測。

$ irb 
ruby-1.9.2-p180 :001 > require 'date' 
=> true 

ruby-1.9.2-p180 :002 > def parse_date(datestring) 
ruby-1.9.2-p180 :003?> formattedDateTime = DateTime.strptime("2011-09-30T11:25:56-05:00", "%Y-%m-%dT%I:%M:%S%z") 
ruby-1.9.2-p180 :004?> dt = formattedDateTime.strftime("%Y-%m-%d %H:%M:%S") 
ruby-1.9.2-p180 :005?> 
ruby-1.9.2-p180 :006 > return dt 
ruby-1.9.2-p180 :007?> end 
=> nil 

ruby-1.9.2-p180 :008 > parse_date nil 
=> "2011-09-30 11:25:56" 

ruby-1.9.2-p180 :009 > def parse_date(datestring) 
ruby-1.9.2-p180 :010?> formattedDateTime = DateTime.strptime(datestring, "%Y-%m-%dT%I:%M:%S%z") 
ruby-1.9.2-p180 :011?> dt = formattedDateTime.strftime("%Y-%m-%d %H:%M:%S") 
ruby-1.9.2-p180 :012?> 
ruby-1.9.2-p180 :013 > return dt 
ruby-1.9.2-p180 :014?> end 
=> nil 

ruby-1.9.2-p180 :015 > parse_date "2011-09-30T11:25:56-05:00" 
=> "2011-09-30 11:25:56" 

ruby-1.9.2-p180 :016 > 

我大膽猜測,雖然。試試這個..

def parse_date (datestring) 
    DateTime.parse(datestring).strftime("%Y-%m-%d %H:%M:%S") 
end 
+0

[下午二時46分30秒2011-10-09] SourceAdapter提出查詢例外:您正在使用什麼版本的紅寶石的無效日期 – Jonathan

+0

? –

+0

我試過DateTime.parse(datestring).strftime(「%Y-%m-%d%H:%M:%S」) ,它也沒有工作。 這個問題可能與PM時間有關。我試圖改變我的硬編碼值爲「2011-10-04T18:43:34-05:00」,現在它給了我這個錯誤: [02:46:30 PM 2011-10-09] SourceAdapter的提出查詢異常:無效日期 – Jonathan