【问题标题】:Time.local() uses unexpected time zoneTime.local() 使用了意外的时区
【发布时间】:2011-02-13 12:26:23
【问题描述】:

我正在组装我的第一个 ruby​​ 脚本,它应该为我的计算机设置唤醒时间 (Kubuntu 10.04)。

wake_h = 7
wake_m = 40

t = Time.now
puts "Current system time: #{t.to_s}"
t += 24*60*60 unless t.hour.between?(0, 5)
tvals = t.to_a
tvals[0,3] = 0 , wake_m, wake_h

wt = Time.local(*tvals)
puts "Setting wake up time to: #{wt.to_s}"
`rtcwake -m no -t #{wt.to_i}`

产生以下输出:

Current system time: Sun Feb 13 13:15:08 +0100 2011
Setting wake up time to: Mon Feb 14 07:40:00 -0100 2011

显然 Ruby 假定我的本地时区为 -0100,尽管当前系统时间产生另一个(正确的)时区 +0100。可能时间使用了错误的语言环境(我需要德国的时区)或存在 DST 问题(我们目前在德国有 DST)。如何检查/设置本地时间使用?

问候,尼拉迪斯

【问题讨论】:

    标签: ruby time locale


    【解决方案1】:

    来自ActiveSupport::TimeWithZone的文档:

    “一个 Time-like 类,可以表示任何时区的时间。必要,因为标准 Ruby Time 实例仅限于 UTC 和系统的 ENV['TZ'] 区域。”

    所以这就是它给你 -0100 的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多