2013-06-28 25 views
1

如果我有一個Date對象,我可以從它那裏得到一週的一天,一個整數,星期一= 1,星期日= 7,就像這樣:我可以從DateTime獲取星期幾作爲數字嗎?

date.cwday 

我可以做同樣的事情DateTime對象在Rails中?我知道我可以使用strftime,但我在循環中進行一些操作,可能會有成百上千個項目的大數據集,並且希望避免字符串和整數之間的額外轉換(如果可能)。

+0

現在我再看看我的代碼,看起來像我很困惑的原因是因爲我得到一個Time對象,我期待DateTime對象。謝謝您的幫助! – Kevin

+0

在Rails中,你也可以使用'to_datetime'來轉換一個'Time'。不知道這是如何影響性能的。 – Kelvin

回答

5

DateTime類繼承自Datecwday方法,所以是。我建議訪問www.ruby-doc.org。 DateDateTime位於標準(非核心)庫中。請記住選擇正確的紅寶石版本。

另外,如果您擔心性能,使用DateTime#cwday時不應該有任何性能損失,因爲該方法從Date(未覆蓋)繼承。還要注意的是,在紅寶石1.8.7中,這兩個類都是用純紅寶石編寫的;而在1.9中,他們編譯C代碼(ruby-doc顯示date_core.c作爲源文件)。 1.9的日期代碼可能運行得更快。

+0

日期沒有在覈心文檔中列出,但您可以創建一個Date對象而不需要任何東西,所以它必須以某種方式在那裏。創建的對象沒有任何方法,所以你不能用它做很多。 –

+0

@theTinMan Date不是核心,而是標準庫。你必須要求日期;從命令行試試這個:'ruby -e'p Date''。然而,像你說的那樣,'irb'似乎會創建一個「空」Date類。 – Kelvin

+1

@theTinMan那麼你知道什麼,它看起來像一個空的'Date'類是由'irb'加載的'lib/ruby​​/1.9.1/ruby​​gems/specification.rb'創建的。 – Kelvin

4

我覺得這樣是

1.9.3-p392 :002 > DateTime.new 
=> Mon, 01 Jan -4712 00:00:00 +0000 
1.9.3-p392 :003 > _.cwday 
=> 1