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防止302跳转的代码例子
Jul 07 Python
python获取本地计算机名字的方法
Apr 29 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
May 13 Python
Python中断多重循环的思路总结
Oct 04 Python
基于python实现蓝牙通信代码实例
Nov 19 Python
利用Python计算KS的实例详解
Mar 03 Python
Python如何将函数值赋给变量
Apr 28 Python
在keras 中获取张量 tensor 的维度大小实例
Jun 10 Python
Python 使用Opencv实现目标检测与识别的示例代码
Sep 08 Python
python 如何设置守护进程
Oct 29 Python
python中requests库+xpath+lxml简单使用
Apr 29 Python
聊聊pytorch测试的时候为何要加上model.eval()
May 23 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创建PDF中文文档
2006/10/09 PHP
PHP编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
php输出表格的实现代码(修正版)
2010/12/29 PHP
PHP对象转换为数组函数(递归方法)
2012/02/04 PHP
PHP中ob_start函数的使用说明
2013/11/11 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
Javascript 模式实例 观察者模式
2009/10/24 Javascript
eclipse如何忽略js文件报错(附图)
2013/10/30 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
react-native 封装选择弹出框示例(试用ios&amp;android)
2017/07/11 Javascript
简述jQuery Easyui一些用法
2017/08/01 jQuery
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
在Python中使用dict和set方法的教程
2015/04/27 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
使用Python对Access读写操作
2017/03/30 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
Python迭代器与生成器基本用法分析
2018/07/26 Python
Python爬虫将爬取的图片写入world文档的方法
2018/11/07 Python
python的常用模块之collections模块详解
2018/12/06 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
出口公司经理求职简历中的自我评价
2013/10/13 职场文书
部门2014年度工作总结
2014/11/12 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
python运行脚本文件的三种方法实例
2022/06/25 Python