蟒蛇提供了一种方式来轻松获取当月(1:4)的本周吗?蟒蛇 - 本月的周数
回答
为了使用直师,月供您正在寻找需要的日期当天根据位置进行调整(一周内)。所以,如果你的月份恰好在星期一(一周的第一天)开始,你可以按照上面的建议进行分工。但是,如果该月在星期三开始,则您需要添加2,然后进行分组。这全部封装在下面的函数中。
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))
adjusted_dom =(1 + first_day.weekday())%7周开始周日 – 2014-03-03 18:13:37
工作得很好。谢谢。 – crazyDiamond 2015-12-15 16:26:10
如果你的第一个星期开始的一个月,你可以使用整数除法的第一天:
import datetime day_of_month = datetime.datetime.now().day week_number = (day_of_month - 1) // 7 + 1
也许datetime.datetime.now()。天将给予当月的今天一天 – aeter 2010-09-27 18:11:19
@aeter:确实。添加。 – 2010-09-27 18:14:05
谢谢。 事实证明,这毕竟不是关于Python,而是关于算术:) – 2010-09-28 11:00:41
我发现了一个很简单的办法:
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
如果第一周返回0
'isocalendar()'可以在1月1日返回53.您的实现对'weekOfMonth(2010,1,8)'返回-52。 – 2010-12-06 23:08:19
我修复了代码并检查了那个错误,代码没有那么大,它完美地完成了这项工作。 – 2010-12-07 00:57:10
返回-47日期:2012-12-31,2013-12-30,2013-12-31 – 2013-01-26 16:16:56
请链接Python: Number of the Week in a Month
这一切都取决于当每月的第一个星期一是
这个版本还有待改进,但在Python模块先看看(日期时间和日历),我有这样的解决方案,我希望能有用:
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
我知道这是岁,但我花了很多时间试图找到答案。我做了我自己的方法,并认为我应该分享。
日历模块有一个monthcalendar方法,该方法返回一个2D数组,其中每一行代表一周。例如:
import calendar
calendar.monthcalendar(2015,9)
结果:
[[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]]
所以numpy的也正是在这里你的朋友。而我在美国,所以我希望本周开始在周日和第一周被打成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)
回报
3
这应该这样做。
#! /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'
乔希的答案必须微调,以适应星期天的第一天。
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))
乔什的回答似乎是最好的,但我认为我们应该考虑到一个星期属于一个月只有在其周四落入该月的事实。至少这是what the iso says。
根据该标准,一个月最多可以有5周。一天可能属于一个月,但这一周它可能不属于。
我已经考虑到,仅仅通过把一个简单
if (first_day.weekday()>3) :
return ret_val-1
else:
return ret_val
其中RET_VAL正是Josh的计算值。经过2017年6月(有5周)和2017年9月的测试。通过'2017-09-01'返回0,因为那一天属于不属于9月份的一周。
最正确的方法是使该方法返回输入日所属的周数和月份名称。
- 1. 周围图像matplotlib蟒蛇
- 2. 蟒蛇matplotlib:绘制3D球体圆周
- 3. 截断日期上周一或蟒蛇
- 4. 天超出范围一个月蟒蛇
- 5. 计数 - 蟒蛇
- 6. 蟒蛇对数
- 7. 文本(蟒蛇)的多块
- 8. 无法在蟒蛇蟒蛇
- 9. 蟒蛇
- 10. Apache Zeppelin蟒蛇UDF到SQL
- 11. 蟒蛇数猜测
- 12. 蟒蛇...用数字
- 13. 蟒蛇,从整数
- 14. 蟒蛇
- 15. 文本数据转换为csv蟒蛇
- 16. 通蟒蛇会议与蟒蛇的另一个版本编写的脚本
- 17. 剖析蟒蛇脚本
- 18. WX蟒蛇,在文本
- 19. 从文本文件蟒蛇
- 20. 降级蟒蛇版本
- 21. 文本列表蟒蛇
- 22. 蟒蛇本地范围
- 23. PHP:将当周的周数转换为本月的当前周数
- 24. 蟒蛇:在matplotlib
- 25. 使用蟒蛇
- 26. 蟒蛇CV2数组numpy的
- 27. 2维数组的蟒蛇
- 28. 蟒蛇functools.partial值的参数
- 29. 删除蟒蛇的边数
- 30. 数据帧file.txt的蟒蛇
当你到达29日,你实际上是在第五周,对吧? – erikbwork 2010-09-27 17:59:24
一个星期是在一个月的第一天开始还是一直在星期一开始?或者总是在星期天?要么... ? – 2010-09-27 18:02:02
“本月的星期”并不完全是一个常用的概念。您需要告诉我们您的定义是什么,例如“本月的周”......特别是每个月的哪一周,例如一周从星期一开始,假设今天是星期天和月的第一天:你想要(上个月,第5周)还是(当前月,第-1周或第0周)或其他什么? – 2010-09-28 00:47:44