1

大家好,我正在使用 Ruby 脚本发送依赖于 Net的错误邮件( https://github.com/u-ichi/fluent-plugin-mail/blob/master/lib/fluent/plugin/out_mail.rb ) ::SMTP。使用 "Time::now.strftime("%a, %d %b %Y %X %z")" 获得时间,

...
smtp.send_mail(<<EOS, @from, @to.split(/,/), @cc.split(/,/), @bcc.split(/,/))
   Date: #{Time::now.strftime("%a, %d %b %Y %X %z")}
   From: #{@from}
   To: #{@to}
   Cc: #{@cc}
   Bcc: #{@bcc}
   Subject: #{subject}
   Mime-Version: 1.0
   Content-Type: text/plain; charset=utf-8
   #{body}
EOS
smtp.finish

不幸的是,我收到的邮件时间不对。我不知道 Time::now.strftime 是如何工作的,但我猜他们是从服务器上挑选时间的?我在 CentOS 上检查了服务器的“日期”,没有发现错误...

有没有其他方法来获得时间?

4

1 回答 1

2

您应该将此时间转换为特定时区。喜欢:

time_zone = ActiveSupport::TimeZone.new(your_desire_time_zone)
converted_time = time.in_time_zone(time_zone)

或转换为 UTC

converted_time = Time.now.utc

然后尝试使用strftime

converted_time.strftime("%a, %d %b %Y %X %z")

有关更多详细信息,请在此处找到。谢谢。

于 2013-07-17T08:30:22.013 回答