使用 Ruby 如何确定即将到来的星期日是本月的第一个、第二个或第三个星期日?
Nicholas Namacha
问问题
113 次
1 回答
3
@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
如果您允许“即将到来的”星期日是今天,那么您将做同样的事情,但将七替换为零。您可以进行条件检查,也可以使用模数/余数运算符。
无论如何,一旦您知道即将到来的星期日还有多少天,您就可以计算日期值(将这些天添加到今天的日期),然后使用第一种方法确定该日期而不是今天的月份中的周数(减 1,除以 7,加 1)。
相关词汇...
Date.wday 0 to 6 (0 = sunday)
Date.day 1 to 31
我不会尝试提供代码,因为我不了解 Ruby。
于 2012-09-25T05:05:49.317 回答