首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算已用年数/剩余年数?

计算已用年数/剩余年数?
EN

Stack Overflow用户
提问于 2012-01-26 15:04:36
回答 2查看 871关注 0票数 1

我试图(动态地)计算一年中已经过去或剩余的百分比。

例如,今年已经过去了25天,一年中有366天,所以我想做25/366,但很明显,这25天每天都会改变。

我想了一个很长的方法来做这件事,使用这些方法一个case/switch表达式

代码语言:javascript
复制
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

例如,类似这样的内容

代码语言:javascript
复制
 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

然而,我相信肯定有更好的方法来做到这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-26 15:09:05

对于日期-时间粒度:

代码语言:javascript
复制
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):

代码语言:javascript
复制
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    
票数 2
EN

Stack Overflow用户

发布于 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9014872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档