Hướng dẫn how do i get the current weekly date in python? - làm thế nào để tôi có được ngày hàng tuần hiện tại trong python?

Sử dụng Python ...

Làm thế nào tôi có thể nhận được một danh sách các ngày trong một tuần cụ thể?

Cái gì đó như...

{
'1' : ['01/03/2010','01/04/2010','01/05/2010','01/06/2010','01/07/2010','01/08/2010','01/09/2010'],  
'2' : ['01/10/2010','01/11/2010','01/12/2010','01/13/2010','01/14/2010','01/15/2010','01/16/2010'] 
}

Chìa khóa của từ điển trong ví dụ này sẽ là số tuần.

Hướng dẫn how do i get the current weekly date in python? - làm thế nào để tôi có được ngày hàng tuần hiện tại trong python?

Starblue

54.3K14 Huy hiệu vàng95 Huy hiệu bạc150 Huy hiệu Đồng14 gold badges95 silver badges150 bronze badges

hỏi ngày 5 tháng 1 năm 2010 lúc 2:42Jan 5, 2010 at 2:42

rmontgomery429rmontgomery429rmontgomery429

14,5K16 Huy hiệu vàng57 Huy hiệu bạc65 Huy hiệu Đồng16 gold badges57 silver badges65 bronze badges

3

Cẩn thận! Nếu bạn muốn xác định số tuần của riêng mình, bạn có thể sử dụng biểu thức máy phát được cung cấp trong câu hỏi đầu tiên của bạn, nhân tiện, có một câu trả lời tuyệt vời). Nếu bạn muốn tuân theo quy ước ISO cho các số tuần, bạn cần cẩn thận:

Tuần dương lịch đầu tiên của một năm là một ngày bao gồm ngày thứ Năm đầu tiên của năm đó và [...] Tuần dương lịch cuối cùng của một năm dương lịch là tuần ngay trước tuần dương lịch đầu tiên của năm dương lịch tiếp theo.

Vì vậy, ví dụ, ngày 1 và 2 tháng 1 năm 2010 không phải là tuần một của năm 2010, mà là tuần 53 năm 2009.January 1st and 2nd in 2010 were NOT week one of 2010, but week 53 of 2009.

Python cung cấp một mô -đun để tìm số tuần bằng lịch ISO:

Mã ví dụ:

h[1] >>> import datetime
h[1] >>> Jan1st = datetime.date(2010,1,1)
h[1] >>> Year,WeekNum,DOW = Jan1st.isocalendar() # DOW = day of week
h[1] >>> print Year,WeekNum,DOW
2009 53 5

Lưu ý, một lần nữa, làm thế nào ngày 1 tháng 1 năm 2010 tương ứng với Tuần 53 năm 2009.

Sử dụng trình tạo được cung cấp trong câu trả lời trước:

from datetime import date, timedelta


def allsundays(year):
    """This code was provided in the previous answer! It's not mine!"""
    d = date(year, 1, 1)                    # January 1st                                                          
    d += timedelta(days = 6 - d.weekday())  # First Sunday                                                         
    while d.year == year:
        yield d
        d += timedelta(days = 7)

Dict = {}
for wn,d in enumerate(allsundays(2010)):
    # This is my only contribution!
    Dict[wn+1] = [(d + timedelta(days=k)).isoformat() for k in range(0,7) ]

print Dict

Dict chứa từ điển bạn yêu cầu.

Đã trả lời ngày 5 tháng 1 năm 2010 lúc 3:32Jan 5, 2010 at 3:32

0

Làm thế nào để bạn xác định tuần? Ở đây tôi sẽ xác định vào một ngày trong tuần đó, sử dụng một chức năng nhận được Chủ nhật trong tuần đó (những gì bạn đã sử dụng trong ví dụ của mình), và sau đó trả lại cộng với 6 ngày tới.

import datetime

one_day = datetime.timedelta(days=1)

def get_week(date):
  """Return the full week (Sunday first) of the week containing the given date.

  'date' may be a datetime or date instance (the same type is returned).
  """
  day_idx = (date.weekday() + 1) % 7  # turn sunday into 0, monday into 1, etc.
  sunday = date - datetime.timedelta(days=day_idx)
  date = sunday
  for n in xrange(7):
    yield date
    date += one_day

print list(get_week(datetime.datetime.now().date()))
# [datetime.date(2010, 1, 3), datetime.date(2010, 1, 4),
#  datetime.date(2010, 1, 5), datetime.date(2010, 1, 6),
#  datetime.date(2010, 1, 7), datetime.date(2010, 1, 8),
#  datetime.date(2010, 1, 9)]
print [d.isoformat() for d in get_week(datetime.datetime.now().date())]
# ['2010-01-03', '2010-01-04', '2010-01-05', '2010-01-06', '2010-01-07',
#  '2010-01-08', '2010-01-09']

Đã trả lời ngày 5 tháng 1 năm 2010 lúc 2:59Jan 5, 2010 at 2:59

2

current_week = datetime.datetime.now().isocalendar()[1]

Paul Roub

36.1k27 Huy hiệu vàng81 Huy hiệu bạc88 Huy hiệu đồng27 gold badges81 silver badges88 bronze badges

Đã trả lời ngày 23 tháng 6 năm 2017 lúc 18:13Jun 23, 2017 at 18:13

KasikasiKasi

Huy hiệu vàng 1431 Huy hiệu bạc8 Huy hiệu đồng1 gold badge1 silver badge8 bronze badges

1

Có một phương pháp 3 dòng tôi đã phát triển sau khi đọc câu hỏi đó:

from datetime import timedelta

def get_week_dates(base_date, start_day, end_day=None):
    """
    Return entire week of dates based on given date limited by start_day and end_day.
    If end_day is None, return only start_day.

    >>> from datetime import date
    >>> get_week_dates(date(2015,1,16), 3, 5)
    [datetime.date(2015, 1, 14), datetime.date(2015, 1, 15), datetime.date(2015, 1, 16)]

    >>> get_week_dates(date(2015,1,15), 2, 5)
    [datetime.date(2015, 1, 13), datetime.date(2015, 1, 14), datetime.date(2015, 1, 15), datetime.date(2015, 1, 16)]
    """
    monday = base_date - timedelta(days=base_date.isoweekday() - 1)
    week_dates = [monday + timedelta(days=i) for i in range(7)]
    return week_dates[start_day - 1:end_day or start_day]

Sử dụng

h[1] >>> import datetime
h[1] >>> Jan1st = datetime.date(2010,1,1)
h[1] >>> Year,WeekNum,DOW = Jan1st.isocalendar() # DOW = day of week
h[1] >>> print Year,WeekNum,DOW
2009 53 5
1 để có được ngày tuần hiện tại.

Đã trả lời ngày 15 tháng 1 năm 2015 lúc 23:50Jan 15, 2015 at 23:50

Chronosscchronosscchronossc

4154 Huy hiệu bạc3 Huy hiệu đồng4 silver badges3 bronze badges

Bạn có thể sử dụng mô -đun DateTime. Bạn có thể chỉ định định dạng và mọi thứ. Đây là liên kết: http://docs.python.org/l Library/datetime.html

Nhìn vào DateTime.DateTime (params) và datetime.timedelta (params). Hy vọng mọi thư đêu trở nên tôt đẹp ;-)

Example:

import datetime

numweeks = 5
start_date = datetime.datetime(year=2010,month=1,day=4)    

weeks = {}

offset = datetime.timedelta(days=0)
for week in range(numweeks):
   this_week = []
   for day in range(7):
        date = start_date + offset
        date = date.strftime( some_format_string )
        this_week.append( date )
        offset += datetime.timedelta(days=1)
   weeks[week] = this_week 

Đã trả lời ngày 5 tháng 1 năm 2010 lúc 2:49Jan 5, 2010 at 2:49

SapphiresunPhiresunSapphireSun

8.93811 Huy hiệu vàng46 Huy hiệu bạc58 Huy hiệu Đồng11 gold badges46 silver badges58 bronze badges

3

Đây là một số mã:

import datetime

now = datetime.datetime.now()

now_day_1 = now - datetime.timedelta(days=now.weekday())

dates = {}

for n_week in range(3):
    dates[n_week] = [(now_day_1 + datetime.timedelta(days=d+n_week*7)).strftime("%m/%d/%Y") for d in range(7)]

print dates

prints:

{
 0: ['01/04/2010', '01/05/2010', '01/06/2010', '01/07/2010', '01/08/2010', '01/09/2010', '01/10/2010'], 
 1: ['01/11/2010', '01/12/2010', '01/13/2010', '01/14/2010', '01/15/2010', '01/16/2010', '01/17/2010'], 
 2: ['01/18/2010', '01/19/2010', '01/20/2010', '01/21/2010', '01/22/2010', '01/23/2010', '01/24/2010']
}

Đã trả lời ngày 5 tháng 1 năm 2010 lúc 2:59Jan 5, 2010 at 2:59

Paul RoubNed Batchelder

36.1k27 Huy hiệu vàng81 Huy hiệu bạc88 Huy hiệu đồng71 gold badges554 silver badges650 bronze badges

1

Đã trả lời ngày 23 tháng 6 năm 2017 lúc 18:13

>>> import collections
>>> dd = collections.defaultdict(list)
>>> jan1 = datetime.date(2010, 1, 1)
>>> oneday = datetime.timedelta(days=1)
>>> allyear = [jan1 + k*oneday for k in range(365 + 6)]
>>> for d in allyear:
...   y, w, wd = d.isocalendar()
...   if y == 2010: dd[w].append(d.strftime('%m/%d/%Y'))
... 

Kasikasi

h[1] >>> import datetime
h[1] >>> Jan1st = datetime.date(2010,1,1)
h[1] >>> Year,WeekNum,DOW = Jan1st.isocalendar() # DOW = day of week
h[1] >>> print Year,WeekNum,DOW
2009 53 5
0

Huy hiệu vàng 1431 Huy hiệu bạc8 Huy hiệu đồng

Có một phương pháp 3 dòng tôi đã phát triển sau khi đọc câu hỏi đó:

Sử dụng

h[1] >>> import datetime
h[1] >>> Jan1st = datetime.date(2010,1,1)
h[1] >>> Year,WeekNum,DOW = Jan1st.isocalendar() # DOW = day of week
h[1] >>> print Year,WeekNum,DOW
2009 53 5
1 để có được ngày tuần hiện tại.Jan 5, 2010 at 3:09

Đã trả lời ngày 15 tháng 1 năm 2015 lúc 23:50Alex Martelli

Chronosscchronossc164 gold badges1205 silver badges1385 bronze badges