利用python获取当前日期前后N天或N月日期的方法示例


Posted in Python onJuly 30, 2017

前言

最近因为工作原因,发现一个Python的时间组件,很好用分享出来!(忘记作者名字了,在这里先感谢了),下面话不多说,来一起看看详细的介绍吧。

示例代码:

# -*- coding: utf-8 -*-

'''获取当前日期前后N天或N月的日期'''

from time import strftime, localtime
from datetime import timedelta, date
import calendar

year = strftime("%Y", localtime())
mon = strftime("%m", localtime())
day = strftime("%d", localtime())
hour = strftime("%H", localtime())
min = strftime("%M", localtime())
sec = strftime("%S", localtime())

def today():
 '''''
 get today,date format="YYYY-MM-DD"
 '''''
 return date.today()


def todaystr():
 '''
 get date string, date format="YYYYMMDD"
 '''
 return year + mon + day


def datetime():
 '''''
 get datetime,format="YYYY-MM-DD HH:MM:SS"
 '''
 return strftime("%Y-%m-%d %H:%M:%S", localtime())


def datetimestr():
 '''''
 get datetime string
 date format="YYYYMMDDHHMMSS"
 '''
 return year + mon + day + hour + min + sec


def get_day_of_day(n=0):
 '''''
 if n>=0,date is larger than today
 if n<0,date is less than today
 date format = "YYYY-MM-DD"
 '''
 if (n < 0):
  n = abs(n)
  return date.today() - timedelta(days=n)
 else:
  return date.today() + timedelta(days=n)


def get_days_of_month(year, mon):
 '''''
 get days of month
 '''
 return calendar.monthrange(year, mon)[1]


def get_firstday_of_month(year, mon):
 '''''
 get the first day of month
 date format = "YYYY-MM-DD"
 '''
 days = "01"
 if (int(mon) < 10):
  mon = "0" + str(int(mon))
 arr = (year, mon, days)
 return "-".join("%s" % i for i in arr)


def get_lastday_of_month(year, mon):
 '''''
 get the last day of month
 date format = "YYYY-MM-DD"
 '''
 days = calendar.monthrange(year, mon)[1]
 mon = addzero(mon)
 arr = (year, mon, days)
 return "-".join("%s" % i for i in arr)


def get_firstday_month(n=0):
 '''''
 get the first day of month from today
 n is how many months
 '''
 (y, m, d) = getyearandmonth(n)
 d = "01"
 arr = (y, m, d)
 return "-".join("%s" % i for i in arr)


def get_lastday_month(n=0):
 '''''
 get the last day of month from today
 n is how many months
 '''
 return "-".join("%s" % i for i in getyearandmonth(n))


def getyearandmonth(n=0):
 '''''
 get the year,month,days from today
 befor or after n months
 '''
 thisyear = int(year)
 thismon = int(mon)
 totalmon = thismon + n
 if (n >= 0):
  if (totalmon <= 12):
   days = str(get_days_of_month(thisyear, totalmon))
   totalmon = addzero(totalmon)
   return (year, totalmon, days)
  else:
   i = totalmon / 12
   j = totalmon % 12
   if (j == 0):
    i -= 1
    j = 12
   thisyear += i
   days = str(get_days_of_month(thisyear, j))
   j = addzero(j)
   return (str(thisyear), str(j), days)
 else:
  if ((totalmon > 0) and (totalmon < 12)):
   days = str(get_days_of_month(thisyear, totalmon))
   totalmon = addzero(totalmon)
   return (year, totalmon, days)
  else:
   i = totalmon / 12
   j = totalmon % 12
   if (j == 0):
    i -= 1
    j = 12
   thisyear += i
   days = str(get_days_of_month(thisyear, j))
   j = addzero(j)
   return (str(thisyear), str(j), days)


def addzero(n):
 '''''
 add 0 before 0-9
 return 01-09
 '''
 nabs = abs(int(n))
 if (nabs < 10):
  return "0" + str(nabs)
 else:
  return nabs


def get_today_month(n=0):
 '''''
 获取当前日期前后N月的日期
 if n>0, 获取当前日期前N月的日期
 if n<0, 获取当前日期后N月的日期
 date format = "YYYY-MM-DD"
 '''
 (y, m, d) = getyearandmonth(n)
 arr = (y, m, d)
 if (int(day) < int(d)):
  arr = (y, m, day)
 return "-".join("%s" % i for i in arr)


if __name__ == "__main__":
 print today()
 print todaystr()
 print datetime()
 print datetimestr()
 print get_day_of_day(20)
 print get_day_of_day(-3)
 print get_today_month(-3)
 print get_today_month(3)
 print get_today_month(19)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持

Python 相关文章推荐
Python 文件操作技巧(File operation) 实例代码分析
Aug 11 Python
Python GAE、Django导出Excel的方法
Nov 24 Python
Python计算三维矢量幅度的方法
Jun 15 Python
Python实现将绝对URL替换成相对URL的方法
Jun 28 Python
简单谈谈Python中的反转字符串问题
Oct 24 Python
利用Python实现颜色色值转换的小工具
Oct 27 Python
Python2包含中文报错的解决方法
Jul 09 Python
python实现维吉尼亚加密法
Mar 20 Python
浅谈python多进程共享变量Value的使用tips
Jul 16 Python
解决python-docx打包之后找不到default.docx的问题
Feb 13 Python
python常用运维脚本实例小结
Feb 14 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 Python
Python 装饰器使用详解
Jul 29 #Python
python实现数据图表
Jul 29 #Python
基于Python的XSS测试工具XSStrike使用方法
Jul 29 #Python
使用Kivy将python程序打包为apk文件
Jul 29 #Python
python对配置文件.ini进行增删改查操作的方法示例
Jul 28 #Python
Python3中使用PyMongo的方法详解
Jul 28 #Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
Jul 28 #Python
You might like
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
浅析is_writable的php实现
2013/06/18 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
JavaScript中的History历史对象
2008/01/16 Javascript
在IE上直接编辑网页内容的js代码(IE地址栏js)
2009/04/27 Javascript
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
JS动态显示表格上下frame的方法
2015/03/31 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
2015/10/09 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
详解Vue.js入门环境搭建
2017/03/17 Javascript
jQuery中table数据的值拷贝和拆分
2017/03/19 Javascript
详解使用vue-admin-template的优化历程
2018/05/20 Javascript
浅谈Vue.use的使用
2018/08/29 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
JS浏览器BOM常见操作实例详解
2020/04/27 Javascript
原生js实现照片墙效果
2020/10/13 Javascript
python Django批量导入数据
2016/03/25 Python
python opencv 直方图反向投影的方法
2018/02/24 Python
python 内置模块详解
2019/01/01 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
TensorFlow2.0使用keras训练模型的实现
2021/02/20 Python
什么时候需要进行强制类型转换
2016/09/03 面试题
高校学生干部的自我评价分享
2013/11/04 职场文书
十八大演讲稿
2014/05/22 职场文书
计生工作先进事迹
2014/08/15 职场文书
公证委托书格式
2014/09/13 职场文书
群众路线表态发言材料
2014/10/17 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python