利用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中的With语句
Feb 02 Python
Python守护进程(daemon)代码实例
Mar 06 Python
Python简单删除列表中相同元素的方法示例
Jun 12 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
Jun 14 Python
使用Python批量修改文件名的代码实例
Jan 24 Python
Python自动抢红包教程详解
Jun 11 Python
详解Pandas之容易让人混淆的行选择和列选择
Jul 10 Python
python 实现识别图片上的数字
Jul 30 Python
python利用7z批量解压rar的实现
Aug 07 Python
如何基于python实现画不同品种的樱花树
Jan 03 Python
基于tensorflow权重文件的解读
May 26 Python
七个非常实用的Python工具包总结
Jun 15 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
php 数组的创建、调用和更新实现代码
2009/03/09 PHP
PHP文件注释标记及规范小结
2012/04/01 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
javascript实现的使用方向键控制光标在table单元格中切换
2010/11/17 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
JavaScript驾驭网页-DOM
2016/03/24 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
jQuery中页面返回顶部的方法总结
2016/12/30 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
2018/09/27 Javascript
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
初步解析Python中的yield函数的用法
2015/04/03 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
python 剪切移动文件的实现代码
2018/08/02 Python
Django网络框架之创建虚拟开发环境操作示例
2019/06/06 Python
浅谈tensorflow 中tf.concat()的使用
2020/02/07 Python
python中get和post有什么区别
2020/06/19 Python
virtualenv介绍及简明教程
2020/06/23 Python
利用CSS3制作简单的3d半透明立方体图片展示
2017/03/25 HTML / CSS
汽车技术服务英文求职信范文
2014/01/02 职场文书
心理健康心得体会
2014/01/02 职场文书
八年级物理教学反思
2014/01/19 职场文书
学习作风建设心得体会
2014/10/22 职场文书
2019同学聚会主持词
2019/05/06 职场文书
sass 常用备忘案例详解
2021/09/15 HTML / CSS