【问题标题】:How can I get the 15th and last day of each month?我怎样才能得到每个月的第 15 天和最后一天?
【发布时间】:2013-11-06 13:02:39
【问题描述】:

我正在使用 Ruby 和 Ruby on Rails 4。

我想获取接下来两个月的每个月的第 15 天和最后一天的日期。

start_date = Time.now
mid_month = start_date.15th.day.of.month
last_day_of_month = start.last.day.of.month

使用 Ruby 或 Rails 最简单的方法是什么?

【问题讨论】:

    标签: ruby-on-rails ruby time


    【解决方案1】:

    我认为您正在寻找以下内容:

    require 'date'
    
    d = Date.today
    start_date = d-d.mday
    p date_15 = start_date.next_day(15)
    # => #<Date: 2013-11-15 ((2456612j,0s,0n),+0s,2299161j)>
    p date_last = d.next_month - d.mday
    # => #<Date: 2013-11-30 ((2456627j,0s,0n),+0s,2299161j)>
    

    【讨论】:

    • mday 真的很好,如果你不想使用 RoR 的方法,这就是他们的方式。
    • @hirolau 我自己不知道 ROR... :( 刚开始学习.. 所以尝试使用 Ruby 解决它..
    【解决方案2】:

    我不确定这是否适用于 Rails 4:

    start_date = Date.today
      # => Wed, 06 Nov 2013
    mid_month  = (start_date + 1.month).beginning_of_month + 14
      # => Sun, 15 Dec 2013
    end_month  = (start_date + 1.month).end_of_month
      # => Tue, 31 Dec 2013
    

    【讨论】:

    • 可以添加输出吗?
    【解决方案3】:

    这里还有一些:

    start_date == Date.today 开始 = start_date.beginning_of_month 中间=开始。提前(周:2) 结束 = start_date.end_of_month

    看起来更易于阅读。

    所有这些方法都可从 ActiveSupport 类扩展中获得,因此如果不使用 Rails,则必须包含它

    【讨论】:

      【解决方案4】:

      接下来的两个月:

      start_date = Date.today
      
      [1..2].each do |month_add|
        mid_month  = (start_date + month_add.month).beginning_of_month + 14
        end_month  = (start_date + month_add.month).end_of_month
        puts 'Month: #{month_add}'
        puts "Mid Month "+mid_month
        puts "End Month "+end_month
      end
      

      【讨论】:

        【解决方案5】:

        可能有一些更简单的方法,但我想到了这个:

        require 'Date'
        
        start_date   = Date.today
        mid_month    = Date.new(start_date.year, start_date.month, 15)
        end_of_month = Date.new(start_date.year, start_date.month+1, 1)-1
        #or
        end_of_month = Date.new(start_date.year, start_date.month, 1).next_month.prev_day
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-09-21
          • 2018-03-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多