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+Java调用Shell脚本时的死锁陷阱详解
Jan 24 Python
python的scikit-learn将特征转成one-hot特征的方法
Jul 10 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
May 15 Python
Django框架自定义session处理操作示例
May 27 Python
使用PyCharm进行远程开发和调试的实现
Nov 04 Python
详解Python修复遥感影像条带的两种方式
Feb 23 Python
Scrapy框架介绍之Puppeteer渲染的使用
Jun 19 Python
Anaconda使用IDLE的实现示例
Sep 23 Python
python cookie反爬处理的实现
Nov 01 Python
PyCharm Community安装与配置的详细教程
Nov 24 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
Jan 27 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
Apr 02 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
一个用php3编写的简单计数器
2006/10/09 PHP
在smarty模板中使用PHP函数的方法
2011/04/23 PHP
通过PHP自带的服务器来查看正则匹配结果的方法
2015/12/24 PHP
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
jquery实现心算练习代码
2010/12/06 Javascript
基于JQuery的动态删除Table表格的行和列的代码
2011/05/12 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
2014/05/28 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
常用的JQuery函数及功能小结
2016/03/24 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
浅谈javascript中的三种弹窗
2016/10/21 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
vue如何判断dom的class
2018/04/26 Javascript
JavaScript静态作用域和动态作用域实例详解
2019/06/17 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
python读取文件名称生成list的方法
2018/04/27 Python
对numpy中的数组条件筛选功能详解
2018/07/02 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
Python实现自动整理文件的脚本
2020/12/17 Python
New Balance美国官网:运动鞋和健身服装
2017/04/11 全球购物
售后服务经理岗位职责
2014/02/25 职场文书
春节晚会主持词
2014/03/24 职场文书
入职担保书怎么写
2014/05/12 职场文书
环保建议书500字
2014/05/14 职场文书
新法人代表任命书
2014/06/06 职场文书
责任书范本大全
2015/05/11 职场文书
寒假致家长的一封信
2015/10/10 职场文书
Pytorch DataLoader shuffle验证方式
2021/06/02 Python
使用CSS设置滚动条样式
2022/01/18 HTML / CSS