Расчет процента прошедшего / оставшегося года? - PullRequest
1 голос
/ 26 января 2012

Я пытаюсь вычислить (динамически)% прошедшего или оставшегося года.

Например, прошло 25 дней в этом году, а в году 366 дней,поэтому я хочу сделать 25/366, но тогда очевидно, что число будет меняться каждый день.

Я думал о долгом пути сделать это, используя эти методы выражения case / switch

t = Time.now   #=> 2007-11-19 08:27:03 -0600
t.day          #=> 19
t = Time.now   #=> 2007-11-19 08:27:30 -0600
t.mon          #=> 11

Например, что-то вроде

 if t.mon == 1
    @year = t.day / 366

if  t.mon == 2
    @year = (t.day + 31)/ 366

  if t.mon == 3
    @year = (t.day + 60)/ 366    //60 (or 59) equals number of days in January and Feb etc

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

Ответы [ 2 ]

2 голосов
/ 26 января 2012

Для детализации по дням:

require 'date'

today          = Date.today
days_this_year = Date.new( today.year, 12, 31 ).yday
pct_done       = 100.0 * today.yday / days_this_year
#=> 7.1038

В качестве альтернативы, если вы хотите гранулярность с точностью до секунды (без зависимости от Date):

now = Time.now
year_start = Time.new( now.year  , 1, 1 )
year_end   = Time.new( now.year+1, 1, 1 )
pct_done   = 100.0 * ( now - year_start ) / ( year_end - year_start )
#=> 6.8338    
1 голос
/ 26 января 2012

require 'time'

(Time.now.yday.to_f / Time.parse("#{Time.now.year}-12-31").yday.to_f * 100 ).round

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...