我知道有一种方法可以确定某个时间是否是夏令时(Time.now.dst?
)但是有没有办法告诉我们下一个夏令时更改的日期?
例如,谷歌返回Sunday, November 1
2015 年下一次夏令时变更。
由于这些日期是基于其他值(例如您正在使用的时区)的,因此它需要像 ActiveSupport/TZInfo 这样的模块。
require 'active_support/core_ext/time/zones'
tz = TZInfo::Timezone.get('US/Pacific')
# pick a timezone to work with
tz.current_period #returns an object of the current period
=> #<TZInfo::TimezonePeriod: #<TZInfo::TimezoneTransitionDefinition:
#<TZInfo::TimeOrDateTime: 1425808800>,#<TZInfo::TimezoneOffset: -28800,3600,PDT>>,
#<TZInfo::TimezoneTransitionDefinition: #<TZInfo::TimeOrDateTime: 1446368400>,
#<TZInfo::TimezoneOffset: -28800,0,PST>>>
tz.current_period.local_start.to_s
# => "2015-03-08T03:00:00+00:00"
tz.current_period.local_end.to_s
# => "2015-11-01T02:00:00+00:00"
我还没弄清楚的一件事是,由于常规 Ruby Core 会这样做:
Time.now.dst?
# => true
它从哪里获取这些信息?我通过 ActiveSupport 找到了 TZInfo 类。 Ruby 只是从操作系统获取布尔值吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)