Strftime在不同的机器/服务器中显示时区的不同缩写

时间:2017-08-22 04:09:21

标签: ruby-on-rails ruby unix timezone

我正在调试Rails应用程序中的显示问题,该应用程序接受用户时区和计划时间的输入,并将其格式化为用户可读计划时间的字符串。在这种情况下,用户时区是Ekaterinburg,而奇怪的部分是显示的时间缩写在具有Ubuntu 16.04的AWS服务器和具有Yosemite的Macbook之间是不同的。 ruby版本都是相同的(2.2.6p396),两者都是相同的Rails应用程序(具有相同的Gemfile和Gemfile.lock)。这是我用来解析时区和时间的行:

ActiveSupport::TimeZone.new("Ekaterinburg").parse("11:29 am").strftime("%l:%M%p %Z")

服务器中显示的格式化时间为

  

“上午11:29 +05”

我本地计算机上显示的格式化时间是

  

“上午11:29 YEKT”

提前感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

根据the documentation on strftime

  

%z - 时区作为UTC的小时和分钟偏移量(例如+0900)

     

%Z - 缩写的时区名称或类似信息。 (依赖于操作系统)

如果您希望它保持一致,请使用%z