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中for循环的使用
Apr 14 Python
在Python中使用全局日志时需要注意的问题
May 06 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
May 25 Python
Python走楼梯问题解决方法示例
Jul 25 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
Aug 30 Python
浅谈Python批处理文件夹中的txt文件
Mar 11 Python
在linux系统下安装python librtmp包的实现方法
Jul 22 Python
python打包成so文件过程解析
Sep 28 Python
深入了解Python装饰器的高级用法
Aug 13 Python
Python通过字典映射函数实现switch
Nov 06 Python
Python 数据科学 Matplotlib图库详解
Jul 07 Python
Python爬虫入门案例之爬取二手房源数据
Oct 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
获得Google PR值的PHP代码
2007/01/28 PHP
php xml-rpc远程调用
2008/12/19 PHP
php设计模式 Composite (组合模式)
2011/06/26 PHP
php.ini中的request_order推荐设置
2015/05/10 PHP
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
风吟的小型JavaScirpt库 (FY.JS).
2010/03/09 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
jQuery插件实现的日历功能示例【附源码下载】
2018/09/07 jQuery
解决百度Echarts图表坐标轴越界的方法
2018/10/17 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
Python中subprocess模块用法实例详解
2015/05/20 Python
python利用正则表达式提取字符串
2016/12/08 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
Pytorch 实现数据集自定义读取
2020/01/18 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
美国最大的在线水培用品商店:GrowersHouse.com
2018/08/14 全球购物
大学班长的职责
2014/01/27 职场文书
给老婆的检讨书
2015/01/27 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis
Python实现自动玩连连看的脚本分享
2022/04/04 Python
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python
vue中控制mock在开发环境使用,在生产环境禁用方式
2022/04/06 Vue.js