【问题标题】:Ruby: Apply time and day of week to a DateTimeRuby:将时间和星期几应用于 DateTime
【发布时间】:2015-08-07 02:23:10
【问题描述】:

问题:

获取 DateTime 对象“A”并应用另一个 DateTime 对象“B”的星期几和时间的最简单方法是什么,这样我就有了一个新的 DateTime 对象,该对象位于 DateTime 对象“A”的一周内,但有DateTime 对象“B”的星期几和时间?

一些上下文:

我正在创建一个日程安排应用程序,用户可以在其中进行定期约会。所有用户都以 DateTime 对象的形式设置他们的默认星期几和时间(我将其保存为 DateTime,但实际上我并不关心日期本身)。

当我想延长他们的定期约会(例如再延长 6 个月)时,我需要获取他们上次约会的那一周,跳到该周内的默认星期几和时间,然后从那里延长。

【问题讨论】:

    标签: ruby-on-rails ruby time


    【解决方案1】:
    require 'date'
    
    def new_date_time(a,b)
      a_date = a.to_date
      new_date = a_date + (b.to_date.wday - a_date.wday)
      DateTime.new(new_date.year, new_date.month, new_date.day,
        b.hour, b.minute, b.second)
    end
    
    a = DateTime.new(2015,8,6,4,5,6) # Thursday
      #=> #<DateTime: 2015-08-06T04:05:06+00:00 ((2457241j,14706s,0n),+0s,2299161j)> 
    b = DateTime.new(2015,8,3,13,21,16) # Monday
    new_date_time(a,b)
      #=> #<DateTime: 2015-08-03T13:21:16+00:00 ((2457238j,48076s,0n),+0s,2299161j)> 
    
    b = DateTime.new(2015,11,17,13,21,16) # Tuesday
    new_date_time(a,b)
      #=> #<DateTime: 2015-08-04T13:21:16+00:00 ((2457239j,48076s,0n),+0s,2299161j)> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-19
      • 2013-11-22
      • 1970-01-01
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-14
      相关资源
      最近更新 更多