【问题标题】:How to get user hour of the week in Ruby如何在 Ruby 中获取一周的用户时间
【发布时间】:2014-10-29 06:43:22
【问题描述】:

我想获取从星期日开始的一周中的当前小时。

考虑当前时间是

Time.now
 => 2014-10-29 12:09:23PM +0530 

结果应该是:84

解释:

Sunday - 24 hours
Monday - 24 hours
Tuesday - 24hours
Wednesday - 12 hours

Total: 84

如何获得一周的用户小时。 Ruby 中有没有可用的方法?或者如何在没有 Ruby 方法的情况下做到这一点。

【问题讨论】:

  • 你尝试过做什么?这将让我们帮助您找出哪里出了问题。
  • @vgoff 如何获取一周的用户时间。查看更新的问题。
  • 您是否尝试过获取星期几,然后将完成的天数乘以 24,然后再加上其余的天数?我不希望在一个函数调用中给你这个 - 你需要做数学。您还应该知道,由于 DST,日子并不总是 24 小时 - 您需要考虑到这一点吗?
  • 您的编辑只提供了关于您想要的解决方案的更多修辞,我认为,最初在您的问题中很明显。您尝试做的事情失败了。

标签: ruby date time hour


【解决方案1】:

您可以使用 Time#wdayTime#hour 获取星期几和一天中的小时。

Time.now.wday
#=> 3
Time.now.hour
#=> 14

剩下的就是基础数学。

【讨论】:

    【解决方案2】:

    尽管我支持于浩,但我必须说,如果你想关注 Jon Skeet 提出的担忧,这不是一个好方法。为此,这里有另一种方法:

    (Time.now - (Date.today - Date.today.wday).to_time) / 3600
    

    Date.today 是,嗯,今天。如果减去一周开始以来的天数,就得到星期天。将其转换为Time,这是周日开始的午夜。减法给你从那时到现在的秒数。除以3600(可选四舍五入)得到小时数。夏令时详细信息应由Time#- 透明处理。

    编辑: 时区...在此之前运行:

    ENV['TZ']='EST5EDT'
    

    (请务必在之后将其重置回原来的状态,以防其他人需要知道时间并且不指望您切换时区。)您也可以改用"America/New_York"。详情请见tz list

    【讨论】:

    • 如何在 ruby​​ 的 EDT 时区完成上述计算。
    猜你喜欢
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多