Python obtains the date of N days or N months before and after the current date

Source: Internet
Author: User
Tags timedelta

Source Address: http://snipperize.todayclose.com/snippet/py/python%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E6%97%A5%E6%9C%9F%E5%89%8D%E5%90%8EN%E5%A4%A9%E6%88%96N%E6%9C%88%E7%9A%84%E6%97%A5%E6%9C%9F--97049/

#!/usr/bin/python'''Filename: "utildate.py"author:   "zhangsong"date  :   "2009-03-24"version:  "1.00"'''from time import strftime, localtimefrom datetime import timedelta, dateimport 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 getdayofday(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 getdaysofmonth(year,mon):    '''    get days of month    '''    return calendar.monthrange(year, mon)[1] def getfirstdayofmonth(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 getlastdayofmonth(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 get_today_month(n=0):    '''    get last or next month's today    n is how many months    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) 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(getdaysofmonth(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(getdaysofmonth(thisyear,j))            j = addzero(j)            return (str(thisyear),str(j),days)    else:        if((totalmon>0) and (totalmon<12)):            days = str(getdaysofmonth(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(getdaysofmonth(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 #print today()#print addzero(10)print get_today_month(-1)print get_lastday_month(3)print get_firstday_month(3)

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.