Python 日期处理——datetime包学习(下)
2015-08-22 14:26
597 查看
加载包
# -*- coding: utf-8 -*- from datetime import date, timedelta # 主要用到timedelta()方法和date.replace()方法
一 、基础函数
current_date = date(2015, 8, 22) date1 = current_date date2 = date(2015, 8, 10) dd = current_date # 当前日期所在的星期的第一天 def first_day_of_current_week(current_date): return current_date - timedelta(days=current_date.weekday()) # 当前日期所在的月份的第一天 def first_day_of_current_month(current_date): return current_date.replace(day=1) # 两个日期之间的日期字符串列表(左闭右开) def days_between_two_dates(date1, date2): n_days = abs((date1 - date2).days) end = date2 if date2 > date1 else date1 if n_days == 1: return str(end - timedelta(days=1)) return [str(end - timedelta(days=x)) for x in range(n_days, 0, -1)]
>>> first_day_of_current_week(current_date) datetime.date(2015, 8, 17) >>> first_day_of_current_month(current_date) datetime.date(2015, 8, 1) >>> days_between_two_dates(date1, date2) ['2015-08-10', '2015-08-11', '2015-08-12', '2015-08-13', '2015-08-14', '2015-08-15', '2015-08-16', '2015-08-17', '2015-08-18', '2015-08-19', '2015-08-20', '2015-08-21']
二、 核心函数
星期处理# 获取当前日期所在的星期的日期字符串列表 def days_of_this_week(current_date, just2dd=True): first_day_of_this_week = first_day_of_current_week(current_date) first_day_of_next_week = first_day_of_this_week + timedelta(days=7) if just2dd: return days_between_two_dates(first_day_of_this_week, current_date) return days_between_two_dates(first_day_of_this_week, first_day_of_next_week) # 获取当前日期上一星期的日期字符串列表 def days_of_last_week(current_date): first_day_of_this_week = first_day_of_current_week(current_date) first_day_of_next_week = first_day_of_this_week - timedelta(days=7) return days_of_this_week(first_day_of_next_week, just2dd=False) >>> days_of_this_week(current_date, just2dd=True) ['2015-08-17', '2015-08-18', '2015-08-19', '2015-08-20', '2015-08-21'] >>> days_of_last_week(current_date) ['2015-08-10', '2015-08-11', '2015-08-12', '2015-08-13', '2015-08-14', '2015-08-15', '2015-08-16']
月份处理
# 获取当前日期所在的月份的日期字符串列表,默认截至到当前日期 def days_of_this_month(dd=date.today(), just2dd=True): first_day_of_this_month = first_day_of_current_month(dd) if dd.month == 12: first_day_of_next_month = dd.replace(year=dd.year+1, month=1, day=1) else: first_day_of_next_month = dd.replace(month=dd.month+1, day=1) if just2dd: return days_between_two_dates(dd, first_day_of_this_month) return days_between_two_dates(first_day_of_this_month, first_day_of_next_month) # 获取当前日期前一月份的日期字符串列表 def days_of_last_month(dd=date.today()): last_day_of_last_month = first_day_of_current_month(dd) - timedelta(days=1) return days_of_this_month(last_day_of_last_month, just2dd=False)
>>> days_of_this_month(dd=date.today(), just2dd=True) ['2015-08-01', '2015-08-02', '2015-08-03', '2015-08-04', '2015-08-05', '2015-08-06', '2015-08-07', '2015-08-08', '2015-08-09', '2015-08-10', '2015-08-11', '2015-08-12', '2015-08-13', '2015-08-14', '2015-08-15', '2015-08-16', '2015-08-17', '2015-08-18', '2015-08-19', '2015-08-20', '2015-08-21'] >>> days_of_last_month(dd=date.today()) ['2015-07-01', '2015-07-02', '2015-07-03', '2015-07-04', '2015-07-05', '2015-07-06', '2015-07-07', '2015-07-08', '2015-07-09', '2015-07-10', '2015-07-11', '2015-07-12', '2015-07-13', '2015-07-14', '2015-07-15', '2015-07-16', '2015-07-17', '2015-07-18', '2015-07-19', '2015-07-20', '2015-07-21', '2015-07-22', '2015-07-23', '2015-07-24', '2015-07-25', '2015-07-26', '2015-07-27', '2015-07-28', '2015-07-29', '2015-07-30', '2015-07-31']
获取当前日期前n天的日期字符串列表(左闭右开,即不包含当前日期)
def last_n_days(current_date, n=0): if n in (0,1): return str(current_date - timedelta(days=n)) return [str(current_date - timedelta(x)) for x in range(n, 0, -1)]
>>> last_n_days(current_date, n=1) '2015-08-21' >>> last_n_days(current_date, n=4) ['2015-08-18', '2015-08-19', '2015-08-20', '2015-08-21']
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法