2017-08-22 44 views
1

我正在调试Rails应用程序中的一个显示问题,该应用程序需要输入用户时区和预定时间,并将其格式化为用户可读的预定时间字符串。在这种情况下,用户时区是叶卡捷琳堡,奇怪的是,显示的时间缩写与使用Ubuntu 16.04的AWS服务器和使用优胜美地的我的Macbook不同。 Ruby版本都是相同的(2.2.6p396),两者都是相同的Rails应用程序(具有相同的Gemfile和Gemfile.lock)。这是我用它来解析时区和时间线:Strftime在不同的机器/服务器上显示不同时区的缩写

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

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

“上午11时29 +05”

虽然显示在本地机器上的格式化时间为

“11:29 AM YKT”

任何帮助表示赞赏,在此先感谢。

+0

您的本地机器在tzdata更新后面。请参阅dup答案,以及[此提交](https://github.com/eggert/tz/commit/1ac038c2c3f25f7211474ae08feb6afb820e35fe)和[本公告](http://mm.icann.org/pipermail/tz-announce/2016 - 九月/ 000041.html)从tzdb。 –

+0

谢谢! tzdata对我来说绝对是新的。 – nayiaw

回答

1

作为每the documentation on strftime

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

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

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

相关问题