簡體   English   中英

Ruby Newbie strftime Time.Now

[英]Ruby Newbie 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的新手,所以我很高興卡住了

如果你查看gem文檔,你會看到:after和: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-DD-MM,這可能會導致錯誤。

編輯

在datetime對象上調用strftime時,它不會修改對象 - 僅根據您提供的格式返回字符串表示法。

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

嘗試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM