1、这个需求是怎样产生的?
由于在写一个工具平台的时候,需要查询数据库,而数据库的库名与表名都做了拆分:比如库按照年份来划分(举例:sms_message_2019),表名按照月份+当前周的方式来拼接(举例:sms_message_record_1105)
比如:11.29号就是 11的第五周
2、实现
- 首先想到是python的两大时间处理函数库:datetime和time
- 我们不需要精确到时分秒,排除time库
- datetime有一个 strftime() 格式化函数。
- 查阅Python的官方资料[见下图],可以找到 %W 或者 %w 参数可以满足需求
- %W 代表是当前天是本年的第几周,好像不太能实现:(我们想到的是要取差值:当前天所在的周数- 本月1号所在周的差值)
- 编写代码
import datetime
def get_week_of_month(year, month, day):
"""
获取指定的某天是某个月的第几周
周一为一周的开始
实现思路:就是计算当天在本年的第y周,本月一1号在本年的第x周,然后求差即可。
因为查阅python的系统库可以得知:
"""
begin = int(datetime.date(year, month, 1).strftime("%W"))
end = int(datetime.date(year, month, day).strftime("%W"))
return end - begin + 1
if __name__ == '__main__':
print(get_week_of_month(2019, 11, 29))
print(get_week_of_month(2019, 11, 30))
print(get_week_of_month(2019, 11, 1))
7.测试
5
5
1
附图:
strftime格式化参数.png
小结: 遇到问题,拆解问题,慢慢由已知的东西想到解决问题的思路。
网友评论