2014-10-03 3 views
0

У меня есть приложение, которое управляет встречами. Я хотел бы назначать еженедельные встречи одновременно за X недель с известной даты начала. Я использую следующий код для этого.Добавление времени через летнее время в Rails

for i in 0..(events.to_i-1) 

    if frequency == "Weekly" 
    interval = (i * 7).days 
    else frequency == "Fortnightly" 
    interval = (i * 14).days 
    end 

    appointment_date = start_date + interval 
    //Create new appointment here..... 

end 

Однако это не учитывает изменения в летнее время. Каков наилучший способ сделать это?

+0

Это следует принимать во внимание DST (по крайней мере с рельсов 3, возможно, ранее). Как результат отличается от ваших ожиданий? –

ответ

0

Вы можете использовать метод from в классе Time, и он позаботится о дневном времени зоны, которую вы используете.

http://api.rubyonrails.org/classes/Time.html#method-i-since

appointment_date = start_date.since (интервал в секундах)

>> Time.now 
=> 2014-10-03 19:39:31 +1000 
>> Time.now.since(24.hours) 
=> 2014-10-04 19:39:49 +1000 
>> Time.now.since(96.hours) 
=> 2014-10-07 20:40:34 +1100 (With Daylight Time applied) 
Смежные вопросы