Конвертировать PHP в Ruby (On Rails) - PullRequest
0 голосов
/ 15 марта 2011
    $fromDateTS = strtotime($start_date);
    $toDateTS = strtotime($end_date);

    for ($currentDateTS = $fromDateTS; $currentDateTS <= $toDateTS; $currentDateTS += (60 * 60 * 24)) 
    {
        $currentDateStr = date("Y-m-d",$currentDateTS);
    }

Как бы я преобразовал этот php в ruby. Кажется, в ruby ​​нет цикла for, похожего на php

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Я бы написал так:

from_start_date_ts = start_date.to_date
to_date_ts = end_date.to_date
from_start_date_ts.step(to_date_ts, 1.day).to_a.map{ |step_date| current_date_str = step_date.to_s }

Возвращает массив строк step_date.

1 голос
/ 15 марта 2011

Есть много решений для этого. Вы можете сделать это, например:

from_start_date_ts = Time.parse(start_date)
to_date_ts = Time.parse(end_date)
current_date_ts = from_start_date_ts
while current_date_ts < to_date_ts
  current_date_ts += 1.day
  current_date_str = current_date_ts.strftime("%D")
end

Я не тестировал его, поэтому он может не работать, как есть, но лучше показать вам один возможный синтаксис цикла в Ruby. Обратите внимание, что вы можете использовать по-разному:

while [condition]
 # do something
end


begin
 # do something
end while [condition]

Вы также можете использовать синтаксис цикла:

loop do
  # do something
  break if [condition]
end

Или цикл до:

until current_date_ts > to_date_ts
  current_date_ts += 1.day
  current_date_str = current_date_ts.strftime("%D")
end

Есть еще:)

...