年の週数を測定する必要があるアプリケーションがあり、日が別の年にあるかどうかに関係なく、すべての週を 7 日にしたいと考えています。
たとえば、2012 年 12 月 30 日から 2013 年 1 月 5 日までのすべての日を同じ週にしたいとします。
datetime
しかし、ドキュメントがここに述べているように、これはPythonで行うのは簡単ではありません:
%U Week number of the year (Sunday as the first day of the week)
as a decimal number [00,53]. All days in a new year preceding the
first Sunday are considered to be in week 0.
「新年の最初の日曜日に先行するすべての日」を第 0 週と見なしたくありません。第 0 週は、2012 年の最後の週と同様に 7 日未満になります。
したがって、Python は次を返します。
import datetime
datetime.date(2012, 12, 31).strftime('%Y-%U')
>>> 2012-53
import datetime
datetime.date(2013, 01, 01).strftime('%Y-%U')
>>> 2013-00
これらの 2 日は月曜日と火曜日ですが、1 週間が日曜日に始まり、土曜日に終わると見なされる場合、同じ週にある必要があります。
代わりに、MySQL がyearweek
モード 2 で行うことを反映した機能が必要です (ドキュメントはこちら)。
例えば、
mysql> select yearweek('2013-01-01', 2) as week;
+--------+
| week |
+--------+
| 201253 |
+--------+
1 row in set (0.64 sec)
日付は 2013 年ですが、週は 201253 と見なされ、2012 年の最後の週が 7 日間になることが保証されていることに注意してください。
これは既に Python で実装されていますか?
参照用に以下に含まれるカレンダー:
December 2012
Mo Tu We Th Fr Sa Su
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
January 2013
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31