【发布时间】:2016-10-22 08:49:21
【问题描述】:
我有一个具有 Tokyo(+0900) 时区的 Rails 项目。
操作系统本地时区为Bangkok(+0700)。
Date#to_time 方法不考虑时区。
Date.current.to_time
2016-06-21 00:00:00 +0700
我现在正在使用Time.zone.parse 方法:
Time.zone.parse(Date.current.to_s)
Tue, 21 Jun 2016 00:00:00 JST +09:00
有没有更好的方法将日期转换为具有正确时区的时间?
时区
Time.zone
#<ActiveSupport::TimeZone:0x007fa8402f86f0 @name="Tokyo", @utc_offset=nil, @tzinfo=#<TZInfo::TimezoneProxy: Asia/Tokyo>, @current_period=#<TZInfo::TimezonePeriod: #<TZInfo::TimezoneTransitionDefinition: #<TZInfo::TimeOrDateTime: -578044800>,#<TZInfo::TimezoneOffset: 32400,0,JST>>,nil>>
config/application.rb
module MyProject
class Application < Rails::Application
config.time_zone = 'Tokyo'
end
end
【问题讨论】:
-
你知道TZInfo吗?它被认为是健壮的(遵循 DST),你会说
TZInfo::Timezone.get('Asia/Bangkok').now -
该方法可能很方便,但我的问题是如何将
Date实例转换为Time实例考虑时区。