50

「年の週」で2つの日付の差を計算しようとしています。日時オブジェクトを取得して日などを取得できますが、週番号は取得できません。もちろん、週末を保証できないため、日付を減算することはできません。

d1.isocalendar()[1]使用して減算して週番号を取得しようとしましたd2.isocalendar()[1]が、問題は週1としてisocalendar()[1]返さDecember 31, 2012れることです(これはおそらく正しいです)が、それは私のロジックがこの日付にまたがることができないことを意味します.

参考までに、私の完全なコードは次のとおりです。

def week_no(self):
    ents = self.course.courselogentry_set.all().order_by('lecture_date')
    l_no = 1
    for e in ents:
        if l_no == 1: 
             starting_week_of_year = e.lecture_date.isocalendar()[1] # get week of year
             initial_year = e.lecture_date.year   
        if e == self: 
            this_year = e.lecture_date.year
            offset_week = (this_year - initial_year) * 52
            w_no = e.lecture_date.isocalendar()[1] - starting_week_of_year + 1 + offset_week
            break 
        l_no += 1
    return w_no  

このコードでは、2012 年 12 月 31 日の講義は -35 になります。

4

7 に答える 7

69

それぞれの日付の週内の月曜日の週の差を計算するのはどうですか? 次のコードでmonday1は、 は月曜日以前d1(同じ週) です。

from datetime import datetime, timedelta

monday1 = (d1 - timedelta(days=d1.weekday()))
monday2 = (d2 - timedelta(days=d2.weekday()))

print 'Weeks:', (monday2 - monday1).days / 7

両方の日付が 1 週間以内の場合は 0、2週間連続の場合は1を返します。

于 2013-01-07T07:53:06.723 に答える
42

Python CookBook (2005 年版) Recipe 3.3 を参照することをお勧めします。次のコード スニペットはクックブックからのもので、必要なことを行います。

from dateutil import rrule
import datetime
def weeks_between(start_date, end_date):
    weeks = rrule.rrule(rrule.WEEKLY, dtstart=start_date, until=end_date)
    return weeks.count()
于 2013-01-07T07:52:40.283 に答える
2

2 つの日付がまたがる週数を特定する。例: 10 月 3 日から 10 月 13 日まで

    October 2015
Mo     5 12 19 26
Tu     6 13 20 27
We     7 14 21 28
Th  1  8 15 22 29
Fr  2  9 16 23 30
Sa  3 10 17 24 31
Su  4 11 18 25

コード:

    import math, datetime

    start_date = datetime.date(2015, 10, 3)
    start_date_monday = (start_date - datetime.timedelta(days=start_date.weekday()))
    end_date = datetime.date(2015, 10, 13)
    num_of_weeks = math.ceil((end_date - start_date_monday).days / 7.0)

3 週間に相当します。

于 2015-10-16T11:45:27.463 に答える
0

「週の差」が正確に何を意味するのか、あなたは少しあいまいです。6 日の差は 1 週間ですか、それともゼロですか? 8 日差は 1 週間ですか、それとも 2 週間ですか。

いずれにせよ、別の単位 (秒または日) での違いを単純に見つけて、適切な量で割ることができないのはなぜですか?

于 2013-01-07T07:52:22.670 に答える