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 相关文章推荐
wxPython事件驱动实例详解
Sep 28 Python
用Python写一个无界面的2048小游戏
May 24 Python
django实现登录时候输入密码错误5次锁定用户十分钟
Nov 05 Python
Python+matplotlib+numpy绘制精美的条形统计图
Jan 02 Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 Python
python使用jieba实现中文分词去停用词方法示例
Mar 11 Python
python 获取字符串MD5值方法
May 29 Python
对python自动生成接口测试的示例讲解
Nov 30 Python
Python控制Firefox方法总结
Jun 03 Python
用Python实现最速下降法求极值的方法
Jul 10 Python
浅谈Pycharm最有必要改的几个默认设置项
Feb 14 Python
python语言的优势是什么
Jun 17 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
桌面中心(三)修改数据库
2006/10/09 PHP
[转帖]PHP世纪万年历
2006/12/06 PHP
php生成随机数或者字符串的代码
2008/09/05 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
php正则修正符用法实例详解
2016/12/29 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
JQuery实现绚丽的横向下拉菜单
2013/12/19 Javascript
Javascript实现单张图片浏览
2014/12/18 Javascript
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
jQuery实现的点击图片居中放大缩小功能示例
2019/01/16 jQuery
ES6数组与对象的解构赋值详解
2019/06/14 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
理论讲解python多进程并发编程
2018/02/09 Python
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
python3 图片referer防盗链的实现方法
2018/03/12 Python
python购物车程序简单代码
2018/04/18 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
Python使用folium excel绘制point
2019/01/03 Python
python join方法使用详解
2019/07/30 Python
python画环形图的方法
2020/03/25 Python
Python多线程正确用法实例解析
2020/05/30 Python
PyQt5的相对布局管理的实现
2020/08/07 Python
Windows下pycharm安装第三方库失败(通用解决方案)
2020/09/17 Python
浅析PyCharm 的初始设置(知道)
2020/10/12 Python
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
shell变量的作用空间是什么
2013/08/17 面试题
董事长秘书岗位职责
2013/11/29 职场文书
出国导师推荐信
2014/01/16 职场文书
学校七一活动方案
2014/01/19 职场文书
主要领导对照检查材料
2014/08/26 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
硕士学位论文评语
2014/12/31 职场文书
商务考察邀请函模板
2015/02/02 职场文书
基于Redis过期事件实现订单超时取消
2021/05/08 Redis