我的Waiver模型上有一个age方法,如下所示:defage(date=nil)ifdate.nil?date=Date.todayendage=0unlessdate_of_birth.nil?age=date.year-date_of_birth.yearage-=1ifdate然后我有一个看起来像这样的规范:it"calculatestheproperage"dowaiver=FactoryGirl.create(:waiver,date_of_birth:12.years.ago)waiver.age.should==12end当我运行这个规范时,我得到Comparisono
在1.9.2p0中,Date#parse采用UE格式。如果您不相信我,请查看format.rb,第1042行。无论如何,我怎样才能让它采用美国格式,以便:>Date.parse("10/4/2010")=>Mon,04Oct2010而不是4月10日。我已经试过了:classDatedef_parse_eu(str,e)_parse_us(str,e)endend但运气不好。还有其他想法吗? 最佳答案 Date.strptime是你想要的但不幸的是它看起来不像文档有日期格式字符串。我得到以下基于格式字符串的谷歌搜索的工作:1.9.2>
在Ruby中,我希望一个不需要的类会引发“未初始化常量”错误。例如,CSV就是这种情况。但是,Date的行为很奇怪:它可用,但显然不起作用,直到需要它为止。~:irb>>Date.new(2012,7,24)ArgumentError:wrongnumberofarguments(3for0)>>require'date'=>true>>Date.new(2012,7,24)=>#如何解释这种行为? 最佳答案 我相信date不是来自irb,而是来自rubygems,特别是thefile其中定义了Gem::Specification:
使用select_date返回一个params[:my_date]和year,month和day属性。如何轻松获取Date对象?我希望得到像params[:my_date].to_date这样的东西。我也很乐意使用date_select。 最佳答案 使用date_select分别为日、月和年提供3个独立的键/值对。因此,您可以将它们作为参数传递到Date.new中以创建新的Date对象。Event模型的date_select返回参数示例:"event"=>{"name"=>"Birthday","date(1i)"=>"2012",
如何在给定日期的IRB中创建一个新的日期对象。以下无效。1.9.3p194:053>require'active_support'=>true1.9.3p194:054>Date.new=>#1.9.3p194:055>Date.parse('12/01/2012')NoMethodError:undefinedmethod`parse'forDate:Classfrom(irb):551.9.3p194:055>Date.new('12/01/2012')ArgumentError:wrongnumberofarguments(1for0) 最佳答案
Time.zone.now.to_date是否等同于Date.today?另一种表达方式:Time.zone.now.to_date==Date.today是否始终为true?如果不是,在应用程序时区中获取对应于“现在”的日期对象的最佳方法是什么? 最佳答案 它们并不总是相同的。Time.zone.now.to_date将使用应用程序时区,而Date.today将使用服务器时区。因此,如果两者位于不同的日期,那么它们就会不同。来self的控制台的示例:ruby-1.9.2-p290:036>Time.zone="Sydney"=>"
在Ruby中,万圣节:Date.today-6.months+6.months!=Date.today我们需要更新Ruby的日期实现吗?其他语言有同样的问题吗? 最佳答案 如果您对没有31天的任何月份执行此操作,就会发生这种情况(即3个月就可以,但1个月、6个月或8个月都会发生这种情况)。如果您执行Date.today-1.month,看起来Rails认为9/31/2011不是有效日期,因此它会多踢一天使其生效一个有效的日期。但是,当您从9月底向前移动一个月时,它将保留在2011年10月30日,因为这是一个有效日期。基本上,Rail
在Ruby中调用Date.today返回当前日期。但是,它在哪个时区?我假设是UTC,但我想确定一下。documentation没有说明任何一种方式。 最佳答案 你可以使用Time.now.utc.to_dateruby 关于ruby-Date.today是UTC吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/10219670/
Date和Time类可以同时处理这两个类的目的是什么? 最佳答案 总结一下常见的ruby时间类是什么:时间这是基本的主力核心ruby时间类。具有日期和时间属性(年、月、日、时、分、秒、亚秒)基于unix纪元(1970-01-01)的浮点秒间隔可以处理unix纪元之前的负数可以处理以秒为单位的时间运算在本地使用UTC或“本地”(系统时区)在处理时区时确实有3种Time对象,让我们看一个夏令时来显示DST:utc=Time.utc(2012,6,1)#=>2012-12-2100:00:00UTCutc.zone#=>"UTC"
简单的问题,但我找不到好的或明确的答案。将Ruby日期和时间对象(对象,而不是字符串)组合成单个DateTime对象的最佳和最有效的方法是什么? 最佳答案 我找到了这个,但它并不像你希望的那样优雅:d=Date.new(2012,8,29)t=Time.nowdt=DateTime.new(d.year,d.month,d.day,t.hour,t.min,t.sec,t.zone)顺便说一句,rubyTime对象还存储年、月和日,因此您在创建DateTime时会丢弃它。 关于Ruby: