Ruby:now.strftime(“%a,%d%b%Y%X%z”)给出了错误的时间

时间:2013-07-17 08:11:06

标签: ruby-on-rails ruby

大家好我正在使用Ruby脚本发送依赖Net :: SMTP的错误邮件(https://github.com/u-ichi/fluent-plugin-mail/blob/master/lib/fluent/plugin/out_mail.rb)。时间是使用“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上检查了服务器的“日期”,发现没有错误...

还有其他方法可以抽出时间吗?

1 个答案:

答案 0 :(得分: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")

有关详细信息,请查找here。感谢。