ruby-on-rails - 如何以更短的格式获取时区
问题描述
Time.zone.name
给 "Eastern Time (US & Canada)"
. 有没有办法以较短的格式获取 Time 对象的时区,例如EST
?
解决方案
我也对这个答案很好奇,所以我四处搜索,在这里找到了一个非常简洁的答案:https ://makandracards.com/makandra/67330-why-you-can-t-use-timezone-codes-like-pst -or-bst-for-time-objects
它解释了 rails TimeWithZones 对象的潜在缺点,但给出了以下答案:
def human_timezone(time_string, timezone)
time = time_string.in_time_zone(timezone)
if time.zone.match?(/^\w/)
time.zone
else
time.formatted_offset
end
end
>> human_timezone('2019-03-28 16:00', 'Pacific Time (US & Canada)')
=> "PDT"
>> human_timezone('2019-03-28 16:00', 'Berlin')
=> "CET"
>> human_timezone('2019-05-01 16:00', 'Almaty')
=> "+06:00"
推荐阅读
- php - 如何使用ajax在php中排序
- express - 将Android模拟器上的本机反应连接到表达服务器
- angularjs - 是否可以使用 anjularjs+angular-xeditable 将可编辑表单属性添加到可编辑表单?
- hadoop - Hadoop 错误,UnknownHostException
- git - 撤消还原提交?
- java - 将侦听端口 80 的 Java 应用程序作为 Azure Web 应用程序运行。如何解决 HTTP 绑定错误?
- node.js - 给定一个点的 Api 或框架来获取边界框
- sql - 多个完全外连接(来自同一张表中的数据)
- java - 解决 Google Code Jam 2018 Round 1C Q3
- c++ - 将引用转换为另一种类型的引用(first_struct& 到 second_struct&)C++