利用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 除法小技巧
Sep 06 Python
python中使用sys模板和logging模块获取行号和函数名的方法
Apr 15 Python
python对指定目录下文件进行批量重命名的方法
Apr 18 Python
TensorFlow实现AutoEncoder自编码器
Mar 09 Python
在PyCharm下打包*.py程序成.exe的方法
Nov 29 Python
python 二维数组90度旋转的方法
Jan 28 Python
Pandas聚合运算和分组运算的实现示例
Oct 17 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
Dec 04 Python
python误差棒图errorbar()函数实例解析
Feb 11 Python
python中前缀运算符 *和 **的用法示例详解
May 28 Python
Python网页解析器使用实例详解
May 30 Python
Scrapy 配置动态代理IP的实现
Sep 28 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
php5 and xml示例
2006/11/22 PHP
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
shopex主机报错误请求解决方案(No such file or directory)
2011/12/27 PHP
PHP rawurlencode与urlencode函数的深入分析
2013/06/08 PHP
php生成短网址示例
2014/05/05 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
php mysql 封装类实例代码
2016/09/18 PHP
jquery.validate使用攻略 第二部
2010/07/01 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
js实现的倒计时按钮实例
2015/06/24 Javascript
js表单验证实例讲解
2016/03/31 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
2016/06/13 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
Node.js用readline模块实现输入输出
2016/12/16 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
2018/08/02 Javascript
实例介绍JavaScript中多种组合继承
2019/01/20 Javascript
JavaScript显式数据类型转换详解
2019/03/18 Javascript
Python标准库之sqlite3使用实例
2014/11/25 Python
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
linux下python使用sendmail发送邮件
2018/05/22 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
python安装twisted的问题解析
2018/08/21 Python
Python中请不要再用re.compile了
2019/06/30 Python
CSS3 中的@keyframes介绍
2014/09/02 HTML / CSS
css3给背景图片加颜色遮罩的方法
2019/11/05 HTML / CSS
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
如何填写个人简历自我评价
2013/12/10 职场文书
自荐书模板
2013/12/15 职场文书
护士演讲稿范文
2014/01/05 职场文书
师生聚会感言
2014/01/26 职场文书
30年同学聚会感言
2014/01/30 职场文书
旷课检讨书500字
2014/10/14 职场文书
golang中的空接口使用详解
2021/03/30 Python