Ruby on rails Rails:是否有办法获取最接近周一到今天的日期对象?
给定日期,如何在Rails中找到最近的星期一 我知道我可以做以下事情: 日期:明天 日期:今天 是否有类似Date.nearest:monday的内容?日期对象上的方法将允许您执行此操作。这个例子将在下周一告诉你Ruby on rails Rails:是否有办法获取最接近周一到今天的日期对象?,ruby-on-rails,date,Ruby On Rails,Date,给定日期,如何在Rails中找到最近的星期一 我知道我可以做以下事情: 日期:明天 日期:今天 是否有类似Date.nearest:monday的内容?日期对象上的方法将允许您执行此操作。这个例子将在下周一告诉你 Date.commercial(Date.today.year, 1+Date.today.cweek, 1) 如果您需要下一个或上一个星期一(以最近的为准),您可以执行以下操作: Date.commercial(Date.today.year, Date.today.cwday.m
Date.commercial(Date.today.year, 1+Date.today.cweek, 1)
如果您需要下一个或上一个星期一(以最近的为准),您可以执行以下操作:
Date.commercial(Date.today.year, Date.today.cwday.modulo(4)+Date.today.cweek, 1)
我现在无法执行此操作,因此如果出现语法错误,请原谅。未经测试,因此您可能需要进行微调,但现在您可以:
def Date.nearest_monday
today = Date.today
wday = today.wday
if wday > 4 # over the half of the week
today + (7 - wday) # next monday
else
today - (1 + wday) # previous monday
end
end
假设你想要两个方向:
Date.today.start\u of_week+7*(Date.today.wday/5)
这有点棘手,但不难计算
用于计算一周结束时,此方法接受用于指示一周开始日期的开始日
参数(默认为:周一
)。他们甚至实现了这个方法
诀窍如下:如果要计算最近的星期一,可以将其计算为从星期二开始的一周结束(星期二=>第一天,星期三=>第二天,…,星期一=>第七天,也是一周结束)
因此,您需要做的就是:
# it will return current date if today is Monday and nearest Monday otherwise
Date.today.end_of_week(:tuesday)
我知道这是一个旧的线程,但它总是很好地保持它为未来的搜索者最新的 假设今天是8月19日星期五。我要做的就是得到最近的星期一:
monday = Date.today.monday
然后,你可以回到过去一周或向前一周,如下所示:
last_monday = monday.last_week
next_monday = monday.next_week
你需要往两个方向走吗?i、 e.如果是星期二,则转到昨天;如果是星期五,则转到下一个星期一?
。divmod(4)
返回一个数组。您可以使用.divmod(4)[1]
或.modulo(4)
;D@PeterWong谢谢你指出这一点。已经更正了,谢谢!很抱歉响应时间长了,假日!:-)这个答案加上文章的使用,对我来说是最好的方法