ruby 连続した日付をカウントする

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 连続した日付をカウントする相关的知识,希望对你有一定的参考价值。

require 'active_support'
require 'active_support/core_ext'

current = Date.current.tomorrow
posted_days = [
  current.advance(days: 1),
  current.advance(days: 2),
  current.advance(days: 3),
  # - this day, not posted -
  current.advance(days: 5),
  current.advance(days: 6),
  current.advance(days: 7),
  current.advance(days: 8),
  # - this day, not posted -
  # - this day, not posted -
  current.advance(days:10),
  current.advance(days:11),
  current.advance(days:12),
  current.advance(days:13),
  current.advance(days:14),
  current.advance(days:15),
  # - this day, not posted -
  current.advance(days:17)
]

class StreakDays
  def initialize(posted_days)
    @posted_days = posted_days
    @count_stock = [0]
    calc_continuation_days
  end

  def longest_streak
    @count_stock.max
  end

  private

  def calc_continuation_days
    count_stock = [0]
    current = @posted_days.first
    @posted_days.each do |posted_day|
      if days_streak?(current, posted_day)
        count_stock[-1] += 1
      else
        count_stock << 1
      end
      current = posted_day
    end
    @count_stock = count_stock
  end

  def days_streak?(a, b)
    date_distance(a, b) == 1
  end

  def date_distance(current, next_day)
    (current - next_day).to_i.abs
  end
end

s = StreakDays.new(posted_days)
p s.longest_streak # => 6

以上是关于ruby 连続した日付をカウントする的主要内容,如果未能解决你的问题,请参考以下文章

javascript [日付加算]日付に时间を加算した日付を返します。加算する値を省略すると,日付単位で加算します。

swift Swiftでは++が使えないので,その代わりに计数変数をカウントアップする关数で代用#minna_de_swift

html jQuery的で入力文字数をカウント

html Awesomium。ボタン押したらカウント上がっていく感じの。

python もしかしたら,今日の正しい日付を知りたいという需要があるかもしれないという気持ちから,Python-fireで正しい今日の日付を所得するスクリプトを书いてみました。日々の精进が大切ですね

ruby 缲り返し处理の中でカウンターを使う,カウンターの初期値を指定する