Strftime在不同的机器/服务器上显示不同时区的缩写
问题描述:
我正在调试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”
任何帮助表示赞赏,在此先感谢。
答
作为每the documentation on strftime
:
%z
- UTC的偏移量时区小时和分钟(例如0900)
%Z
- 缩写时区的名称或类似的信息。 (取决于操作系统)
如果您希望它一致,请使用%z
。
您的本地机器在tzdata更新后面。请参阅dup答案,以及[此提交](https://github.com/eggert/tz/commit/1ac038c2c3f25f7211474ae08feb6afb820e35fe)和[本公告](http://mm.icann.org/pipermail/tz-announce/2016 - 九月/ 000041.html)从tzdb。 –
谢谢! tzdata对我来说绝对是新的。 – nayiaw