2015-05-27 129 views
2

我需要將日期字符串轉換爲Unix時間戳格式。 我從API中得到的字符串看起來像:Ruby - 將格式化日期轉換爲時間戳

2015-05-27T07:39:59Z 

.tr()我得到:

2015-05-27 07:39:59 

這是一個很普通的日期格式。儘管如此,Ruby無法將其轉換爲Unix TS格式。我試過.to_time.to_i,但我總是收到NoMethodError錯誤。

在PHP中,函數strtotime()正好適用於此。 Ruby有沒有類似的方法?

+0

不這有幫助嗎? http://ruby-doc.org/core-2.2.0/Time.html#method-i-strftime – lcguida

回答

7

您的日期字符串爲RFC3339格式。您可以將它解析爲DateTime對象,然後將其轉換爲Time,最後轉換爲UNIX時間戳。

require 'date' 

DateTime.rfc3339('2015-05-27T07:39:59Z') 
#=> #<DateTime: 2015-05-27T07:39:59+00:00 ((2457170j,27599s,0n),+0s,2299161j)> 

DateTime.rfc3339('2015-05-27T07:39:59Z').to_time 
#=> 2015-05-27 09:39:59 +0200 

DateTime.rfc3339('2015-05-27T07:39:59Z').to_time.to_i 
#=> 1432712399 

對於一個更通用的方法,你可以使用DateTime.parse代替DateTime.rfc3339,但最好是使用更具體的方法,如果你知道的格式,因爲它可以防止由於日期字符串歧義錯誤。如果你有一個自定義格式,你可以使用DateTime.strptime解析它

0
string.tr!('TO',' ') 
Time.parse(string) 

試試這個

1
require 'time' 

str = "2015-05-27T07:39:59Z" 
Time.parse(str).to_i # => 1432712399 

或者,使用Rails:

str.to_time.to_i 
2

在軌道4,您可以像使用 - string.to_datetime.to_i

"Thu, 26 May 2016 11:46:31 +0000".to_datetime.to_i 
相關問題