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益智游戏计算汉诺塔问题示例
Mar 05 Python
python使用Berkeley DB数据库实例
Sep 26 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
May 25 Python
python利用Guetzli批量压缩图片
Mar 23 Python
Python实现多级目录压缩与解压文件的方法
Sep 01 Python
python地震数据可视化详解
Jun 18 Python
Python FTP文件定时自动下载实现过程解析
Nov 12 Python
TensorFlow实现从txt文件读取数据
Feb 05 Python
使用matplotlib动态刷新指定曲线实例
Apr 23 Python
python上selenium的弹框操作实现
Jul 13 Python
Python过滤序列元素的方法
Jul 31 Python
python如何实时获取tcpdump输出
Sep 16 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
在win系统安装配置 Memcached for PHP 5.3 图文教程
2015/03/03 PHP
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
2011/07/15 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
2016/11/17 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
Angular4 反向代理Details实践
2018/05/30 Javascript
微信小程序之数据绑定原理解析
2019/08/14 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
Javascript地址引用代码实例解析
2020/02/25 Javascript
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
基于python实现简单日历
2018/07/28 Python
Python3.5运算符操作实例详解
2019/04/25 Python
django的settings中设置中文支持的实现
2019/04/28 Python
Python实现冒泡排序算法的完整实例
2020/11/04 Python
html5响应式开发自动计算fontSize的方法
2020/01/13 HTML / CSS
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
荷兰音乐会和音乐剧门票订购网站:Topticketshop
2019/08/27 全球购物
毕业生的自我鉴定该怎么写
2013/12/02 职场文书
医院检讨书范文
2014/02/01 职场文书
捐助贫困学生倡议书
2014/05/16 职场文书
婚前财产协议书范本
2014/10/19 职场文书
师德师风主题教育活动总结
2015/05/07 职场文书
新郎新娘致辞
2015/07/31 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书
MySQL 聚合函数排序
2021/07/16 MySQL
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android
redis数据一致性的实现示例
2022/03/18 Redis
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android
python神经网络Xception模型
2022/05/06 Python