Ruby - 获取下一个夏令时更改

2024-01-02

我知道有一种方法可以确定某个时间是否是夏令时(Time.now.dst?)但是有没有办法告诉我们下一个夏令时更改的日期?

例如,谷歌返回Sunday, November 12015 年下一次夏令时变更。


由于这些日期是基于其他值(例如您正在使用的时区)的,因此它需要像 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(使用前将#替换为@)

Ruby - 获取下一个夏令时更改 的相关文章

  • 为什么我需要 Nginx 和 Puma?

    我正在将 Rails 应用程序部署到生产环境中 看起来 Puma 速度很快 可以处理我想要在网络服务器中完成的许多事情 我想知道我是否需要使用 Nginx 如果只使用 Puma 我会错过什么 Nginx 是一个 Web 服务器 puma 是
  • 从 float 转换的 Ruby Time 对象不等于原始 Time 对象

    time Time now fvalue time to f return time Time at fvalue 有人可以解释为什么上面的表达式返回 false 吗 如何从 float 创建一个与原始时间变量匹配的新 Time 对象 Th
  • 启动同一作业的多个延迟作业进程

    我在运行多个工作人员的设置中使用延迟作业 就我的问题而言 这并不重要 但假设我运行 10 个工作线程 当前在开发模式下执行此操作 我遇到的问题是两个不同的工作人员有时开始处理同一项工作 调用我的工作对象上的执行方法 据我所知 延迟作业正在使
  • 将控制器操作处理为 JS 而不是 HTML

    所以我有以下形式 Follow 我试图
  • ruby中如何将binary32转换为float

    我有一个以 IEEE 32 编码的 binary32 如何将 0x0040EDC2 转换为 118 625 我尝试了几种打包和解包选项 但没有成功 IEEE http en wikipedia org wiki Single precisi
  • 如果使用 jQuery 添加字段,Rails 嵌套表单属性不会保存

    我有一个带有嵌套表单的 Rails 表单 我使用 Ryan Bates 嵌套表单和 jquery 教程 并且就动态添加新字段而言 它工作得很好 但是当我提交表单时 它不会保存任何关联的属性 但是 如果在表单加载时构建部分 则它会很好地创建属
  • 未知属性:user_id

    我在执行 current user stories build 期间收到错误未知属性 user id class User lt ActiveRecord Base has many stories class name Story for
  • RSpec 2 中使用 OR 相等

    下面这个例子的正确写法是什么 玩家的分数应等于 5 或 8 it should equal 5 or 8 do player score should 5 or 8 end Thanks Tim 5 or 8将始终产生结果 5 并且不会执行
  • 对范围值进行排序

    我想对表示数值范围的字符串数组进行排序 如下所示 b 0 5 100 250 5 25 50 100 250 500 25 50 使用sort我得到的方法 b sort gt 0 5 100 250 25 50 250 500 5 25 5
  • 如何使用国家宝石

    我正在尝试使用国家宝石 https github com hexorx countries 但是在我捆绑安装这个 gem 后 有一些关于如何合并它的基本问题 我是否需要创建新的控制器 模型才能访问这些国家 地区 如何创建一个简单的选择下拉列
  • 我应该如何使用 alias_method_chain 作为构建方法?

    我正在使用 Ruby on Rails 3 2 13 我想正确使用alias method chain build option name声明 因为我收到一个奇怪的错误 那是 在我的控制器文件中我有 class Articles Comme
  • 如何获取 Oracle 上 SYSDATE 的 UTC 值

    可能是一个经典 您知道在 Oracle 上检索 SYSDATE 的 UTC 值的简单技巧吗 最好也能在第 8 版上工作 现在我有自定义函数 Cheers Stefan 您可以使用 SELECT SYS EXTRACT UTC TIMESTA
  • 在生产环境中使用 Rails 设置 sunspot solr

    我尝试了各种链接 但我似乎找不到关于创建与生产中的 Rails 一起运行的 solr 实例的好资源 我知道您必须为生产设置 solr 服务器 我已经尝试使用 tomcat 设置 solr 但我似乎无法将其链接到 Rails 应用程序 有什么
  • 如何检查字符串是否为有效日期

    我有一个字符串 31 02 2010 并想检查它是否是有效日期 最好的方法是什么 我需要一个方法 如果字符串是有效日期 则返回 true 如果不是 则返回 false require date begin Date parse 31 02
  • time_select 表单助手将新时间对象解释为 UTC,而不是配置的时区

    我遇到了对我来说似乎很简单的问题 但我无法弄清楚我做错了什么 在我的应用程序中 用户可以通过简单的 form for 添加他们的课程 他们可以输入课程讲座的开始时间和结束时间 如下所示 div class field Start Time
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • 如何在 Ruby 中重写 require ?

    我需要覆盖require来自 Ruby 文件 这是我的 start rb 应用程序入口点 所必需的 rubygems在此之前加载 位于 start rb 中 我尝试的所有操作都出现了堆栈溢出错误 正确的做法是什么 一般来说 如果你想修补一些
  • 子域中的 Rails url 助手 - 删除子域

    我网站上的用户可以拥有子域 例如 他们的页面网址是 name example com 登录的用户可以查看更多用户信息 因此在用户的显示页面上 我有一个使用以下代码生成的链接 user url user subdomain gt false
  • 将记录批量插入到 Active Record 表中

    我发现我的Model create 当我一次添加大量记录时 语句需要很长时间才能运行 看着ActiveRecord 导入 https github com zdennis activerecord import wiki但它不适用于哈希数组
  • “heroku”命令存在于以下 Ruby 版本中:

    我在使用 heroku 工具带时遇到了重大问题 我正在使用 cedar 14 堆栈 当我尝试使用不是的 ruby 版本时ruby 2 0 0 dev我收到这个错误 rbenv heroku command not found The her

随机推荐