Con trăn có cung cấp cách dễ dàng lấy tuần hiện tại của tháng (1: 4) không?python - Số tuần của tháng
Trả lời
Để sử dụng bộ phận thẳng, ngày tháng cho các ngày mà bạn đang nhìn vào cần phải được điều chỉnh theo vị trí (trong tuần) của ngày đầu tiên của tháng. Vì vậy, nếu tháng của bạn bắt đầu vào thứ Hai (ngày đầu tiên của tuần), bạn có thể thực hiện phân chia như đề xuất ở trên. Tuy nhiên, nếu tháng bắt đầu vào thứ Tư, bạn sẽ muốn thêm 2 và sau đó thực hiện phép chia. Đây là tất cả được đóng gói trong hàm bên dưới.
from math import ceil
def week_of_month(dt):
""" Returns the week of the month for the specified date.
"""
first_day = dt.replace(day=1)
dom = dt.day
adjusted_dom = dom + first_day.weekday()
return int(ceil(adjusted_dom/7.0))
adjustment_dom = (1 + first_day.weekday())% 7 cho tuần bắt đầu chủ nhật –
Hoạt động thực sự tốt. Cảm ơn bạn. – crazyDiamond
Nếu tuần đầu tiên của bạn bắt đầu vào ngày đầu tiên của tháng, bạn có thể sử dụng phân chia số nguyên:
import datetime day_of_month = datetime.datetime.now().day week_number = (day_of_month - 1) // 7 + 1
có thể datetime.datetime.now(). Ngày sẽ cho ngày hôm nay trong tháng – aeter
@aeter: Thật vậy. Thêm. –
Cảm ơn. Nó chỉ ra nó không phải là về Python sau khi tất cả, nhưng về arithmetics :) –
Kiểm tra các python calendar mô-đun
Cảm ơn. Tôi biết về lịch và dateutil, nhưng cả hai đều không giúp tôi. –
vito có câu trả lời đúng. Tôi đã sử dụng: 'st, end = calendar.monthrange (2012, 6)', 'days = range (st, kết thúc + 1)', 'week_days = [ngày [i: i + 7] cho i trong phạm vi (0, len (ngày), 7)] ' – Droogans
Tôi tìm thấy một cách khá đơn giản:
import datetime
def week(year, month, day):
first_week_month = datetime.datetime(year, month, 1).isocalendar()[1]
if month == 1 and first_week_month > 10:
first_week_month = 0
user_date = datetime.datetime(year, month, day).isocalendar()[1]
if month == 1 and user_date > 10:
user_date = 0
return user_date - first_week_month
trả về 0 nếu tuần đầu tiên
' isocalendar() 'có thể trả về 53 cho ngày 1 tháng 1. Thực hiện của bạn trả về -52 cho' weekOfMonth (2010, 1, 8) '. –
Tôi đã sửa mã với một kiểm tra cho lỗi đó, và mã không nhận được lớn và nó thực hiện công việc một cách hoàn hảo. –
Trả lại -47 cho các ngày: 2012-12-31, 2013-12-30, 2013-12-31 –
vui lòng liên kết đến Python: Number of the Week in a Month
CNTT tất cả phụ thuộc vào khi thứ hai ngày 1 tháng là
Phiên bản này có thể được cải thiện nhưng như một cái nhìn đầu tiên trong module python (datetime và lịch), tôi làm cho giải pháp này, tôi hy vọng có thể hữu ích:
from datetime import datetime
n = datetime.now()
#from django.utils.timezone import now
#n = now() #if you use django with timezone
from calendar import Calendar
cal = Calendar() # week starts Monday
#cal = Calendar(6) # week stars Sunday
weeks = cal.monthdayscalendar(n.year, n.month)
for x in range(len(weeks)):
if now.day in weeks[x]:
print x+1
Tôi biết đây là tuổi nhưng tôi đã dành rất nhiều thời gian để tìm câu trả lời này. Tôi đã thực hiện phương pháp của riêng mình và nghĩ rằng tôi nên chia sẻ.
Mô đun lịch có phương thức monthcalendar trả về mảng 2D trong đó mỗi hàng đại diện cho một tuần. Ví dụ:
import calendar
calendar.monthcalendar(2015,9)
kết quả:
[[0,0,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,0,0,0]]
Vì vậy NumPy là nơi là bạn của bạn ở đây. Và tôi đang ở Mỹ vì vậy tôi muốn tuần để bắt đầu vào chủ nhật và tuần đầu tiên được dán nhãn 1:
import calendar
import numpy as np
calendar.setfirstweekday(6)
def get_week_of_month(year, month, day):
x = np.array(calendar.monthcalendar(year, month))
week_of_month = np.where(x==day)[0][0] + 1
return(week_of_month)
get_week_of_month(2015,9,14)
lợi nhuận
3
này nên làm điều đó.
#! /usr/bin/env python2
import calendar, datetime
#FUNCTIONS
def week_of_month(date):
"""Determines the week (number) of the month"""
#Calendar object. 6 = Start on Sunday, 0 = Start on Monday
cal_object = calendar.Calendar(6)
month_calendar_dates = cal_object.itermonthdates(date.year,date.month)
day_of_week = 1
week_number = 1
for day in month_calendar_dates:
#add a week and reset day of week
if day_of_week > 7:
week_number += 1
day_of_week = 1
if date == day:
break
else:
day_of_week += 1
return week_number
#MAIN
example_date = datetime.date(2015,9,21)
print "Week",str(week_of_month(example_date))
#Returns 'Week 4'
Câu trả lời của Josh phải được điều chỉnh một chút để chứa ngày đầu tiên rơi vào chủ nhật.
def get_week_of_month(date):
first_day = date.replace(day=1)
day_of_month = date.day
if(first_day.weekday() == 6):
adjusted_dom = (1 + first_day.weekday())/7
else:
adjusted_dom = day_of_month + first_day.weekday()
return int(ceil(adjusted_dom/7.0))
Câu trả lời của Josh có vẻ tốt nhất nhưng tôi nghĩ rằng chúng ta nên tính đến thực tế là một tuần thuộc về một tháng chỉ khi thứ năm của nó rơi vào tháng đó. Ít nhất đó là what the iso says.
Theo tiêu chuẩn đó, một tháng có thể có tối đa 5 tuần.Một ngày có thể thuộc về một tháng, nhưng tuần mà nó thuộc về có thể không.
tôi đã đưa vào tính toán rằng chỉ bằng cách thêm một đơn giản
if (first_day.weekday()>3) :
return ret_val-1
else:
return ret_val
nơi ret_val là chính xác giá trị tính toán của Josh. Thử nghiệm vào tháng 6 năm 2017 (có 5 tuần) và vào tháng 9 năm 2017. Việc trả '2017-09-01' trả về 0 vì ngày đó thuộc về một tuần không thuộc vào tháng 9.
Cách chính xác nhất sẽ là để phương thức trả về cả số tuần và tên tháng ngày nhập vào thuộc về.
- 1. TSQL Tính số tuần của tháng
- 2. Số tuần kinh doanh python
- 3. NSDate nhận tuần trước, số tháng trước
- 4. Tính tuần của tháng trong .NET
- 5. tên tháng thành số tháng và ngược lại trong python
- 6. Python: Thứ Sáu thứ ba của tháng
- 7. được tuần thứ n của tháng trong C#
- 8. nhận NSDate ngay hôm nay, hôm qua, tuần này, tuần trước, tháng này, tháng trước ... biến
- 9. Làm thế nào để có được số tuần trong Python?
- 10. Làm cách nào để lấy số tháng từ số năm và số tuần trong C#?
- 11. Số tuần của một năm trong dateformat
- 12. Nhóm của Tuần năm (Tuần số) trong LINQ to SQL
- 13. Chuyển đổi phút thành ngày, tuần, tháng và năm
- 14. Nhóm bởi phạm vi ngày trên tuần/tháng khoảng
- 15. Query hôm qua, tuần trước, tháng trước SQLite
- 16. PHP có ngày bắt đầu và ngày kết thúc của tuần theo số tuần
- 17. .NET có cho tôi số tuần sai trong ngày 29 tháng 12 năm 2008 không?
- 18. Chức năng cho tuần trong tháng trong mysql
- 19. Cách lấy dấu thời gian của tháng hiện tại, ngày đầu tiên của tháng, số giờ
- 20. Kiểm tra xem ngày tháng có là cuối tuần PHP
- 21. Python: Sự khác biệt của 2 datetimes trong tháng
- 22. Trình ghi ngày tháng của jQuery ui, nhận Ngày trong tuần từ onSelect
- 23. gọi lại cho các nhấp chuột vào nút thanh tiêu đề của tháng, tuần, ngày?
- 24. Thay đổi màu phông chữ của các ngày cuối tuần trong ngày tháng jquery jquery
- 25. Vẽ ngày tháng trên trục x với matplotlib của Python
- 26. Số tháng dựa trên số không
- 27. Lấy ngày đầu tiên trong tuần trong MySql bằng cách sử dụng Tuần số
- 28. Trích xuất các tháng và số có hai chữ số từ ngày Python
- 29. Chuyển đổi tên tháng thành số tháng trong SQL Server
- 30. cách lấy số ngày của tháng hiện tại? trong PHP
Khi bạn đạt đến ngày 29, bạn đang thực sự ở tuần thứ năm, phải không? – erikbwork
Có một tuần bắt đầu vào ngày đầu tiên của tháng hoặc luôn vào Thứ Hai không? Hoặc luôn luôn vào ngày chủ nhật? Hoặc là... ? –
"tuần trong tháng" không chính xác là khái niệm thường được sử dụng. Bạn cần cho chúng tôi biết định nghĩa của bạn là gì, với ví dụ về "tuần của tháng" ... đặc biệt, tuần của tháng WHICH, ví dụ: tuần bắt đầu vào thứ Hai, giả sử hôm nay là cả Chủ nhật và ngày đầu tiên của tháng: bạn có muốn (tháng trước, tuần 5) hoặc (tháng hiện tại, tuần -1 hoặc 0) hay thứ gì khác không? –