Python 日期区间处理 (本周本月上周上月...)


Posted in Python onAugust 08, 2019

工具类

class CalendarUtils:
  """
  日期工具类
  """

  @staticmethod
  def delta_day(delta=0):
    """
    :param delta:  偏移量 
    :return:    0今天, 1昨天, 2前天, -1明天 ...
    """
    return (datetime.now() + timedelta(days=delta)).strftime('%Y-%m-%d')

  @staticmethod
  def delta_week(delta=0):
    """
    :param delta:  偏移量
    :return:    0本周, -1上周, 1下周 ...
    """
    now = datetime.now()
    week = now.weekday()
    _from = (now - timedelta(days=week - 7 * delta)).strftime('%Y-%m-%d')
    _to = (now + timedelta(days=6 - week + 7 * delta)).strftime('%Y-%m-%d')
    return _from, _to

  @staticmethod
  def delta_month(delta=0):
    """
    :param delta:  偏移量 
    :return:    0本月, -1上月, 1下月, 下下个月...
    """

    def _delta_month(__year, __month, __delta):
      _month = __month + __delta
      if _month < 1:
        delta_year = math.ceil(abs(_month) / 12)
        delta_year = delta_year if delta_year else 1
        __year -= delta_year
        _month = delta_year * 12 + __month + __delta
      elif _month > 12:
        delta_year = math.floor(_month / 12)
        __year += delta_year
        _month %= 12
      return __year, _month

    now = datetime.now()
    _from = datetime(*_delta_month(now.year, now.month, delta), 1)

    _to = datetime(*_delta_month(_from.year, _from.month, 1), 1) - timedelta(days=1)
    return _from.strftime('%Y-%m-%d'), _to.strftime('%Y-%m-%d')

  @staticmethod
  def delta_year(delta=0):
    """
    :param delta:  偏移量
    :return:    0今年, -1去年, 1明年 ...
    """
    now = datetime.now()
    _from = datetime(now.year + delta, 1, 1)
    _to = datetime(_from.year + 1, 1, 1) - timedelta(days=1)
    return _from.strftime('%Y-%m-%d'), _to.strftime('%Y-%m-%d')
    

if __name__ == '__main__':
  print('当前日期: ', datetime.now())
  print('*' * 40)
  print('今天: ', CalendarUtils.delta_day())
  print('昨天: ', CalendarUtils.delta_day(-1))
  print('前天: ', CalendarUtils.delta_day(-2))
  print('明天: ', CalendarUtils.delta_day(1))
  print('后天: ', CalendarUtils.delta_day(2))
  print('*' * 40)
  print('本周: ', CalendarUtils.delta_week())
  print('上周: ', CalendarUtils.delta_week(-1))
  print('下周: ', CalendarUtils.delta_week(1))
  print('*' * 40)
  print('本月: ', CalendarUtils.delta_month())
  print('上月: ', CalendarUtils.delta_month(-1))
  print('下月: ', CalendarUtils.delta_month(1))
  print('*' * 40)
  print('本年: ', CalendarUtils.delta_year())
  print('去年: ', CalendarUtils.delta_year(-1))
  print('明年: ', CalendarUtils.delta_year(1))

运行结果

当前日期:  2019-06-26 11:01:34.662560
****************************************
今天:  2019-06-26
昨天:  2019-06-25
前天:  2019-06-24
明天:  2019-06-27
后天:  2019-06-28
****************************************
本周:  ('2019-06-24', '2019-06-30')
上周:  ('2019-06-17', '2019-06-23')
下周:  ('2019-07-01', '2019-07-07')
****************************************
本月:  ('2019-06-01', '2019-06-30')
上月:  ('2019-05-01', '2019-05-31')
下月:  ('2019-07-01', '2019-07-31')
****************************************
本年:  ('2019-01-01', '2019-12-31')
去年:  ('2018-01-01', '2018-12-31')
明年:  ('2020-01-01', '2020-12-31')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
小结Python用fork来创建子进程注意事项
Jul 03 Python
详解python3百度指数抓取实例
Dec 12 Python
Python的时间模块datetime详解
Apr 17 Python
python逐行读写txt文件的实例讲解
Apr 03 Python
Django添加KindEditor富文本编辑器的使用
Oct 24 Python
Django+JS 实现点击头像即可更改头像的方法示例
Dec 26 Python
python 字典访问的三种方法小结
Dec 05 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
Feb 25 Python
django处理select下拉表单实例(从model到前端到post到form)
Mar 13 Python
PyInstaller的安装和使用的详细步骤
Jun 02 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
Jul 23 Python
python操作链表的示例代码
Sep 27 Python
python各类经纬度转换的实例代码
Aug 08 #Python
Python3.0 实现决策树算法的流程
Aug 08 #Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
Aug 08 #Python
Django rest framework jwt的使用方法详解
Aug 08 #Python
使用Python实现文字转语音并生成wav文件的例子
Aug 08 #Python
django基于restframework的CBV封装详解
Aug 08 #Python
python 控制Asterisk AMI接口外呼电话的例子
Aug 08 #Python
You might like
php.ini中date.timezone设置分析
2011/07/29 PHP
php时间计算相关问题小结
2016/05/09 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
jQuery下通过$.browser来判断浏览器.
2011/04/05 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
2012/12/04 Javascript
jquery 插件开发 extjs中的extend用法小结
2013/01/04 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
jQuery实现图片文字淡入淡出效果
2015/12/21 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
vue 内联样式style中的background用法说明
2020/08/05 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
vue动态设置路由权限的主要思路
2021/01/13 Vue.js
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
人机交互程序 python实现人机对话
2017/11/14 Python
Python实现读取txt文件并画三维图简单代码示例
2017/12/09 Python
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
几款好用的python工具库(小结)
2020/10/20 Python
欧洲最大的高尔夫零售商:American Golf
2019/09/02 全球购物
Sql面试题
2013/03/20 面试题
怎样写留学自荐信
2013/11/11 职场文书
项目合作协议书
2014/04/16 职场文书
文明班级建设方案
2014/05/15 职场文书
《中彩那天》教学反思
2016/02/24 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang
Python机器学习之KNN近邻算法
2021/05/14 Python
Mysql 用户权限管理实现
2021/05/25 MySQL
Anaconda配置各版本Pytorch的实现
2021/08/07 Python
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸