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网页请求urllib2模块简单封装代码
Feb 07 Python
Python的Bottle框架的一些使用技巧介绍
Apr 08 Python
Python实现mysql数据库更新表数据接口的功能
Nov 19 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
Feb 05 Python
基于python 爬虫爬到含空格的url的处理方法
May 11 Python
python pytest进阶之fixture详解
Jun 27 Python
运用PyTorch动手搭建一个共享单车预测器
Aug 06 Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 Python
python3 requests库实现多图片爬取教程
Dec 18 Python
python 如何调用远程接口
Sep 11 Python
python中出现invalid syntax报错的几种原因分析
Feb 12 Python
Python自动化实战之接口请求的实现
May 30 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
一些花式咖啡的配方
2021/03/03 冲泡冲煮
PHP获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
比较全面的event对像在IE与FF中的区别 推荐
2009/09/21 Javascript
动态调用CSS文件的JS代码
2010/07/29 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
jquery通过a标签删除table中的一行的代码
2013/12/02 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
2014/05/11 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
jquery获取节点名称
2015/04/26 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
NodeJs下的测试框架Mocha的简单介绍
2017/02/22 NodeJs
JavaScript实现分页效果
2017/03/28 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
js实现简单掷骰子小游戏
2019/10/24 Javascript
JS实现数据动态渲染的竖向步骤条
2020/06/24 Javascript
vue实现页面切换滑动效果
2020/06/29 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
Python中使用md5sum检查目录中相同文件代码分享
2015/02/02 Python
分析Python编程时利用wxPython来支持多线程的方法
2015/04/07 Python
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
Python整型运算之布尔型、标准整型、长整型操作示例
2017/07/21 Python
简单谈谈python中的lambda表达式
2018/01/19 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
2019/08/29 Python
python实现简易学生信息管理系统
2020/04/05 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
高校师德师风自我剖析材料
2014/09/29 职场文书
党的群众路线教育实践活动查摆问题及整改措施
2014/10/10 职场文书
鸦片战争观后感
2015/06/09 职场文书
大学生就业指导课心得体会
2016/01/15 职场文书
Rust中的Struct使用示例详解
2022/08/14 Javascript