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 31 Python
Python中的列表知识点汇总
Apr 14 Python
python3.4用函数操作mysql5.7数据库
Jun 23 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
Sep 11 Python
Python中一些不为人知的基础技巧总结
May 19 Python
python3连接MySQL数据库实例详解
May 24 Python
Python Matplotlib库安装与基本作图示例
Jan 09 Python
对Python中小整数对象池和大整数对象池的使用详解
Jul 09 Python
python处理自动化任务之同时批量修改word里面的内容的方法
Aug 23 Python
Python字符串的修改方法实例
Dec 19 Python
python实现程序重启和系统重启方式
Apr 16 Python
基于Pygame实现简单的贪吃蛇游戏
Dec 06 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
队列在编程中的实际应用(php)
2010/09/04 PHP
PHP学习笔记之二
2011/01/17 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
html向js方法传递参数具体实现
2013/08/08 Javascript
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
2016/06/16 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
基于jQuery实现照片墙自动播放特效
2017/01/12 Javascript
史上最全JavaScript常用的简写技巧(推荐)
2017/08/17 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
JavaScript实现图片合成下载的示例
2020/11/19 Javascript
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
总结Python编程中三条常用的技巧
2015/05/11 Python
Python语言生成水仙花数代码示例
2017/12/18 Python
python实现员工管理系统
2018/01/11 Python
django如何连接已存在数据的数据库
2018/08/14 Python
python基于SMTP协议发送邮件
2019/05/31 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
2019/06/04 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
如何在存储过程中使用Loop
2016/01/05 面试题
考试退步检讨书
2014/01/15 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
2015年防汛工作总结
2015/05/15 职场文书
单位同意报考证明
2015/06/17 职场文书
企业培训简报范文
2015/07/20 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
CPU不支持Windows11系统怎么办
2021/11/21 数码科技