Ruby 无年红宝石日期?

Ruby 无年红宝石日期?,ruby,datetime,date,Ruby,Datetime,Date,有没有一种方法可以在没有年份信息的情况下表示12/25这样的日期?我正在考虑只使用[月,年]数组,除非有更好的方法。您可以使用Time类中的strftime函数 time = Time.now time.strftime("%m/%d") 您可以使用Date类并将年份硬设置为闰年(因此,如果需要,可以表示2/29)。如果您需要在两个日期之间执行“距离”计算(假设您不需要跨越年份边界,并且您不关心在某些年份错误跨越2/29时得到的“一天结束”答案),这将非常方便 这可能也很方便,因为您可以使用#

有没有一种方法可以在没有年份信息的情况下表示12/25这样的日期?我正在考虑只使用
[月,年]
数组,除非有更好的方法。

您可以使用Time类中的strftime函数

time = Time.now
time.strftime("%m/%d")
您可以使用Date类并将年份硬设置为闰年(因此,如果需要,可以表示2/29)。如果您需要在两个日期之间执行“距离”计算(假设您不需要跨越年份边界,并且您不关心在某些年份错误跨越2/29时得到的“一天结束”答案),这将非常方便

这可能也很方便,因为您可以使用
#strftime
将日期显示为(例如)“Mar-3”(如果需要)

不过,根据用法的不同,我想我可能会显式地表示它们,可以是成对的数组,或者类似于
YearlessDate=Struct.new(:month,:day)
。这样你就不会犯上面提到的错误


然而,我从未有过一个与一年无关的约会。假设你是这样,那么@SeanHill的答案是最好的:保留年份信息,但在不合适的时候不要向用户显示。

表示没有年份的日期的最“正确”的方法是使用介于001和365之间的Fixnum。您可以对它们进行比较,而无需将其转换为日期,并且可以根据需要使用date轻松创建给定年份的日期。ordinal

我看到您接受使用strftime作为最佳答案。该网站是一种生成日期格式字符串的简单方法。迈克,你在网站URL上有一个输入错误。应该是ForGoodstrftime.com我以前从未见过那个网站,谢谢!但是如果是闰年,你的日期是2月29日呢