我试图(动态地)计算一年中已经过去或剩余的百分比。
例如,今年已经过去了25天,一年中有366天,所以我想做25/366,但很明显,这25天每天都会改变。
我想了一个很长的方法来做这件事,使用这些方法一个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然而,我相信肯定有更好的方法来做到这一点。
发布于 2012-01-26 15:09:05
对于日期-时间粒度:
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 发布于 2012-01-26 15:21:00
require 'time'
(Time.now.yday.to_f / Time.parse("#{Time.now.year}-12-31").yday.to_f * 100 ).round
https://stackoverflow.com/questions/9014872
复制相似问题