Ruby 返回日期(如果在日期范围内)
我有一个包含到期日列表的对象,我正在尝试构建一个系统,当指定日期比到期日早1个月或更短时返回到期日。它应该以这种格式返回到期日“2009年2月1日”。让我用我目前的代码澄清一下Ruby 返回日期(如果在日期范围内),ruby,date-range,Ruby,Date Range,我有一个包含到期日列表的对象,我正在尝试构建一个系统,当指定日期比到期日早1个月或更短时返回到期日。它应该以这种格式返回到期日“2009年2月1日”。让我用我目前的代码澄清一下 #Build array of estate objects estate.due_dates = "1st Feb, 3rd May, 1st Aug, 5th Nov" estate2.due_dates = "28th Feb, 31st May, 31st Aug, 30th Nov" estates =
#Build array of estate objects
estate.due_dates = "1st Feb, 3rd May, 1st Aug, 5th Nov"
estate2.due_dates = "28th Feb, 31st May, 31st Aug, 30th Nov"
estates = [estate,estate2]
set_due_date_on_estates("1st Jan 2009",estates) #Run function - should return "1st Feb 2009,28th Feb 2009"
def set_due_date_on_estates(date,estates)
estates.each{|estate|
estate.due_dates.split(",").each{|due_date|
((date)..(date >> 1)).each{|current_date|
estate.set_reminder(due_date + current_date.strftime("%Y")) if current_date.strftime('%d %m') ==
Date.parse(due_date).strftime('%d %m')
}
}
end
}
我遇到的问题是,我的到期日列表没有一年,因此我正在循环查看我的范围,并使用“%d%m”格式检查日期是否相等。如果是这样,我在estate对象中通过使用循环中的当前“到期日”与循环中的“当前日期”的年份连接来设置提醒
我对代码不太满意,尤其是嵌套循环,我想知道是否有更好的方法来检查到期日是否在日期范围内,即使到期日没有年份。谢谢您可以使用日期分析器: 克罗诺斯的例子:
def parse_date(date)
Kronos.parse(date.sub(/\d{4}$/, ''))
end
此函数为您提供一个没有年份的Kronos对象,该对象更易于比较、生成范围等。您可以使用日期分析器: 克罗诺斯的例子:
def parse_date(date)
Kronos.parse(date.sub(/\d{4}$/, ''))
end
此函数为您提供一个没有年份的Kronos对象,它更易于比较、生成范围等。是的,您可以使用CHRONCE,也可以编写一个worker,它将定期检查指定日期是否比到期日期早1个月或更短。若结果为真,请该员工做些事情(比如,若日期在截止日期内,给你们发一封电子邮件或其他任何东西),你们可以通过谷歌搜索Resque和Redis找到更多关于该员工的信息。另一种选择是在某个基准参考上转换两个日期,然后进行计算。是的,您可以使用慢性,也可以编写一个worker,定期检查指定日期是否比到期日期早1个月或更短。若结果为真,请该员工做些事情(比如,若日期在截止日期内,给你们发一封电子邮件或其他任何东西),你们可以通过谷歌搜索Resque和Redis找到更多关于该员工的信息。另一种选择是在某个基准引用上转换这两个日期,然后进行计算。慢性解析器看起来正是我想要的。Thanks@namtax,我对这个问题很感兴趣,你是如何解决它的?慢性解析器看起来正是我想要的。Thanks@namtax,我对这个问题很感兴趣,你是怎么解决的?我想我现在会变成慢性病,但是我想我现在会变成慢性病,但是