/ / net / imapライブラリでのルビー文字列補間の問題-ruby

net / imapライブラリのruby文字列補間の問題 - ruby

私はruby "の組み込みimap / netライブラリを使用しています。文字列の補間に問題があるようです。以下は正常に動作します。

imap = Net::IMAP.new("imap.gmail.com",993, true)
imap.login("myuser@gmail.com","password")
imap.select("INBOX")
ids = imap.search(["SINCE", "26-Sep-2016"])
=> [1, 2]

上記の文字列リテラルを使用しました。ただし、文字列リテラルを次のものに置き換えると、エラーが発生します。

imap = Net::IMAP.new("imap.gmail.com",993, true)
imap.login("myuser@gmail.com","password")
imap.select("INBOX")
ids = imap.search(["SINCE", Time.now.strftime("%d-%b-%y")])
=> Net::IMAP::BadResponseError: Could not parse command

Time.now.strftimeの結果が文字列リテラルである場合、文字列リテラルのみが機能するのは何ですか?これはrubyの標準ライブラリであるため、確実に機能する必要があります。私は何が欠けていますか?

回答:

回答№1は1

%yTime#strftime は2桁の年であり、 Net::IMAP#search 4桁の年が必要です。あなたが欲しい %Y

Time.now.strftime("%d-%b-%y") # => "28-Sep-16"
Time.now.strftime("%d-%b-%Y") # => "28-Sep-2016"

これは「Net :: IMAPの単なる要件ではなく、実際に」 IMAP仕様で定義されています 84および85ページ。