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 23 Python
python处理文本文件实现生成指定格式文件的方法
Jul 31 Python
python使用socket向客户端发送数据的方法
Apr 29 Python
浅谈MySQL中的触发器
May 05 Python
浅谈Python中copy()方法的使用
May 21 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
Apr 20 Python
mac安装pytorch及系统的numpy更新方法
Jul 26 Python
选择Python写网络爬虫的优势和理由
Jul 07 Python
如何通过50行Python代码获取公众号全部文章
Jul 12 Python
Python 函数list&amp;read&amp;seek详解
Aug 28 Python
Python 忽略文件名编码的方法
Aug 01 Python
基于python图书馆管理系统设计实例详解
Aug 05 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程序员不应该忽略的3点
2015/10/09 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
2017/03/14 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
基于json的jquery地区联动效果代码
2011/07/06 Javascript
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
js操作textarea 常用方法总结
2012/12/03 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
AngularJS中的promise用法分析
2017/05/19 Javascript
解决option标签selected=&quot;selected&quot;属性失效的问题
2017/11/06 Javascript
详解为Bootstrap Modal添加拖拽的方法
2018/01/05 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
推荐11个实用Python库
2015/01/23 Python
详细介绍Python函数中的默认参数
2015/03/30 Python
Python面向对象编程中的类和对象学习教程
2015/03/30 Python
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
在Python中调用ggplot的三种方法
2015/04/08 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
基于Python中的yield表达式介绍
2019/11/19 Python
使用python计算三角形的斜边例子
2020/04/15 Python
python实现图书馆抢座(自动预约)功能的示例代码
2020/09/29 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
多视角3D可旋转的HTML5 Logo动画
2016/03/02 HTML / CSS
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
李维斯牛仔裤英国官方网站:Levi’s英国
2019/10/10 全球购物
小学生爱国演讲稿
2014/04/25 职场文书
伊索寓言教学反思
2014/05/01 职场文书
工地安全生产标语
2014/06/06 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
2015年党员自我剖析材料
2014/12/17 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
ant design vue的form表单取值方法
2022/06/01 Vue.js