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网络编程学习笔记(三):socket网络服务器
Jun 09 Python
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
Nov 05 Python
在Python中使用mongoengine操作MongoDB教程
Apr 24 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
Jan 20 Python
python使用psutil模块获取系统状态
Aug 27 Python
python:socket传输大文件示例
Jan 18 Python
python3实现多线程聊天室
Dec 12 Python
Python jieba库用法及实例解析
Nov 04 Python
Python如何将函数值赋给变量
Apr 28 Python
Python 无限级分类树状结构生成算法的实现
Jan 21 Python
Python列表的深复制和浅复制示例详解
Feb 12 Python
用python修改excel表某一列内容的操作方法
Jun 11 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 危险函数全解析
2009/09/09 PHP
一道求$b相对于$a的相对路径的php代码
2010/08/08 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
php实现httpclient类示例
2014/04/08 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
使用angular写一个hello world
2015/01/23 Javascript
JavaScript之数组(Array)详解
2015/04/01 Javascript
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
2015/05/11 Javascript
jquery+css实现的红色线条横向二级菜单效果
2015/08/22 Javascript
Bootstrap模仿起筷首页效果
2016/05/09 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
python中pycurl库的用法实例
2014/09/30 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
Python中的面向接口编程示例详解
2021/01/17 Python
CSS3中Animation属性的使用详解
2015/08/06 HTML / CSS
CSS3 box-sizing属性详解
2016/11/15 HTML / CSS
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
制定岗位职责的原则
2013/11/08 职场文书
工地安全生产标语
2014/06/06 职场文书
公共场所标语
2014/06/30 职场文书
机械专业求职信范文
2014/07/15 职场文书
节能环保演讲稿
2014/08/28 职场文书
六年级学生期末评语
2014/12/26 职场文书
销售经理岗位职责
2015/01/31 职场文书
2015年七一建党节活动总结
2015/03/20 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫