2012-11-19 129 views
0

我有以下的Ruby編寫的紅寶石新手的strftime Time.Now

t = Time.now 
    t.strftime("%Y-%d-%m") 

SCHEDULER.every '1m', :first_in => 0 do |job| 
    send_event('gmail_gh', {current: gmail.inbox.count(:after => Date.parse(t)), older: gmail.inbox.count}) 

,但我得到這個錯誤

scheduler caught exception: 
can't convert Time into String 
/var/dashing/cdmdash/jobs/gmail_gh.rb:21:in `parse' 
/var/dashing/cdmdash/jobs/gmail_gh.rb:21:in `block in <top (required)>' 
/usr/local/rvm/gems/ruby-1.9.3-p327/gems/rufus-scheduler-2.0.17/lib/rufus/sc/jobs.rb:231:in `call' 
/usr/local/rvm/gems/ruby-1.9.3-p327/gems/rufus-scheduler-2.0.17/lib/rufus/sc/jobs.rb:231:in `trigger_block' 
/usr/local/rvm/gems/ruby-1.9.3-p327/gems/rufus-scheduler-2.0.17/lib/rufus/sc/jobs.rb:191:in `block in trigger' 
/usr/local/rvm/gems/ruby-1.9.3-p327/gems/rufus-scheduler-2.0.17/lib/rufus/sc/scheduler.rb:416:in `call' 
/usr/local/rvm/gems/ruby-1.9.3-p327/gems/rufus-scheduler-2.0.17/lib/rufus/sc/scheduler.rb:416:in `block in trigger_job' 

我認爲這事做與T變量,它不是一個修飾,我是Ruby的新手,所以我升技堅持

回答

2

如果你看看gem文檔,你會看到:after和:before params以YYYY-MM-DD的格式輸入日期。

從寶石自述:

gmail.inbox.count(:after => Date.parse("2010-02-20"), :before => Date.parse("2010-03-20")) 
gmail.inbox.count(:on => Date.parse("2010-04-15")) 

您的代碼傳遞YYYY-MM-DD這很可能導致錯誤。

編輯

當你調用一個DateTime對象上的strftime,它不修改的對象 - 只返回基於你給格式字符串符號。

因此,Date.parse(t)仍然是Time.now是一個參數。

試試這個:

t = Time.now.strftime("%Y-%m-%d") 
Date.parse(t) 
+0

感謝這個我已經編輯我的變量是t.strftime(「%Y-%間%d」),但我仍然得到錯誤 –

+0

@JustinErswell編輯答案與修復! –

+0

非常感謝 –