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中正则表达式的详细教程
Apr 30 Python
python友情链接检查方法
Jul 08 Python
Python实现一个转存纯真IP数据库的脚本分享
May 21 Python
Python基于pygame模块播放MP3的方法示例
Sep 30 Python
python @property的用法及含义全面解析
Feb 01 Python
更换Django默认的模板引擎为jinja2的实现方法
May 28 Python
浅谈Python在pycharm中的调试(debug)
Nov 29 Python
python pandas生成时间列表
Jun 29 Python
Tensorflow 多线程设置方式
Feb 06 Python
Python如何把多个PDF文件合并代码实例
Feb 13 Python
Python HTMLTestRunner如何下载生成报告
Sep 04 Python
如何用python绘制雷达图
Apr 24 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
给ECShop添加最新评论
2015/01/07 PHP
Yii CDBCriteria常用方法实例小结
2017/01/19 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
小议javascript 设计模式 推荐
2009/10/28 Javascript
javascript json2 使用方法
2010/03/16 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
js上传图片及预览功能实例分析
2015/04/24 Javascript
jquery实现九宫格大转盘抽奖
2015/11/13 Javascript
js图片跟随鼠标移动代码
2015/11/26 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
2017/07/19 Javascript
解决vue-router中的query动态传参问题
2018/03/20 Javascript
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
Python列表list排列组合操作示例
2018/12/18 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
python 获取微信好友列表的方法(微信web)
2019/02/21 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
django列表筛选功能的实现代码
2020/03/27 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
化学教师教学反思
2014/01/17 职场文书
如何写一封打动人心的求职信
2014/02/17 职场文书
校园联欢晚会主持词
2014/03/17 职场文书
涉密人员保密承诺书
2014/05/28 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
文员岗位职责
2015/02/04 职场文书
博士生专家推荐信
2015/03/25 职场文书
员工聘用合同范本
2015/09/21 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL
JS实现简单的九宫格抽奖
2022/06/28 Javascript