2010-09-23 214 views

回答

5

你所以你的情況有Ruby 1.9的Time.strptime

>> time = Time.strptime('2007-12-31 23:59:59', '%Y-%m-%d %H:%M:%S')  
=> 2007-12-31 23:59:59 +0000 

一旦你有一個Time對象,你可以將其轉換爲多種格式。一個簡單的time.to_i會給你一個Unix時間戳。

1

您可以使用'date.to_time.to_i'將日期時間轉換爲unix時間戳。

以下是軌控制檯上的輸出: -

日期= Date.today =>週四,2010年9月23日 日期 =>週四,2010年9月23日 date.to_time.to_i => 1285180200個

謝謝,Anubhaw

+0

我應該澄清說我需要這個在rails中工作。 – 2010-09-23 05:05:27

+0

那麼這在鋼軌中有效。以下是出帶上軌控制檯>>日期= Date.today =>週四,2010年09月23 >>日期 =>週四,2010 月23日>> date.to_time.to_i => 1285180200 – Anubhaw 2010-09-23 05:07:35

0

可以使用strftime方法

日期= Date.today#這將返回星期四,2010年9月23日 str_date = date.strftime( '%B%d%Y')#這將給2010年9月23日

指這對更好地理解 blog

這將幫助你轉換一次的自定義格式。但它不適用於您的情況,即將其轉換爲UNIX時間戳。

5

您給出的示例的ISO 8601時間格式爲「2007-12-31T23:59:59」,而不是「2007-12-31 23:59:59」(注意數據和時間之間的T組件)。

在Ruby中,如果您需要time庫,則可以解析正確格式化的ISO 8601日期。如果你的日期到來與空間,而不是T的日期從時間分開,只是把它傳遞給Time.iso8601前將其替換:

>> require 'time' 
=> true 
>> Time.iso8601("2007-12-31 23:59:59".sub(/ /,'T')) 
=> Mon Dec 31 23:59:59 -0500 2007 

要以這種格式轉換的時間爲Unix時間戳,只需使用.to_i

>> Time.iso8601("2007-12-31 23:59:59".sub(/ /,'T')).to_i 
=> 1199163599 

如果您需要更多的靈活性,左右格式,Time.parse應該做的伎倆;但是,我會在生產代碼中使用它,因爲它可能會給出意外的錯誤或無效輸入值,而不是拋出異常。

0

原來所有我需要的是:

Time.parse(DATE_STR)。to_i

相關問題