使用Ruby如何确定即将到来的星期日是该月的第一个,第二个还是第三个星期日?
答案 0 :(得分:2)
@ElYusubov - 很接近,但不是很正确。
作为一个起点,分工必须是七(一周的天数)。但是time.day给出了从1到31的每月的一天,所以首先你需要在除法之前减去一个并在之后加一个。任何一个月的前八天都给...
Day number (Day# - 1) / 7 Week#
---------- -------------- -----
1 0.0 1
2 0.14 1
3 0.29 1
4 0.43 1
5 0.57 1
6 0.71 1
7 0.86 1
8 1 2
无论哪一天的time.day给出,那个星期#表示它是那周的第一天,第二天等。但是你希望星期天来。
wday给出一个工作日 - 0到6,其中0表示星期日。那么即将到来的星期天有多少天?那么,这取决于你对“即将来临”的定义,但如果你今天排除==星期日,你基本上从7日减去今天的工作日。
Weekday today Days until next Sunday
------------- ----------------------
0 (Sun) 7
1 (Mon) 6
2 (Tue) 5
3 (Wed) 4
4 (Thu) 3
5 (Fri) 2
6 (Sat) 1
如果你允许“即将来临”的星期天是今天,那么你做同样的事情,但用零代替七。您可以进行条件检查,也可以使用modulo / remainder运算符。
无论如何,一旦你知道即将到来的星期日还有多少天,你可以计算出它的日期值(将那些天数添加到今天的日期)然后确定该日期的月份而不是今天使用第一种方法(减1,除以7,加1)。
相关词汇......
Date.wday 0 to 6 (0 = sunday)
Date.day 1 to 31
我不会尝试提供代码,因为我不了解Ruby。