python 前几个月日期函数怎么写?月份的加减法,时间加减运算。

Python09

python 前几个月日期函数怎么写?月份的加减法,时间加减运算。,第1张

from datetime import datetime

import math

def last_xmonth(x):

  now = datetime.now()

  if x==0:

      return now

  else:

      a = x%12      # 取余数  前a个月 限制0<a<12

      b = math.ceil(x/12)+1 if x%12==0 else math.ceil(x/12)  # 前b-1年

      if x<now.month:

          date1 = datetime.strftime(datetime(now.year-b+1,now.month-a,now.day),'%Y-%m-%d')

      else :

          date1 = datetime.strftime(datetime(now.year-b,now.month+12-a,now.day),'%Y-%m-%d')

      return date1

python日期加减

Python 中日期类型是datetime.date

日期加减的结果,以及可以对日期相加减的类型是datetime.timedelta

timedelta = date1 - date2

date1 = date2 + timedelta

datetime.timedelta(days, seconds, microseconds)

d1 = datetime.date.today()

加一天:

d2 = d1 + datetime.timedelta(1)

减一天:

d2 = d1 + datetime.timedelta(-1)

python 如何计算时间

Python Tip]如何计算时间差

Q:如何方便的计算两个时间的差,如两个时间相差几天,几小时等

A:使用datetime模块可以很方便的解决这个问题,举例如下:

>>>import datetime

>>>d1 = datetime.datetime(2005, 2, 16)

>>>d2 = datetime.datetime(2004, 12, 31)

>>>(d1 – d2).days

47

上例演示了计算两个日期相差天数的计算。

import datetime

starttime = datetime.datetime.now()

#long running

endtime = datetime.datetime.now()

print (endtime – starttime).seconds

上例演示了计算运行时间的例子,以秒进行显示。

>>>d1 = datetime.datetime.now()

>>>d3 = d1 + datetime.timedelta(hours=10)

>>>d3.ctime()

上例演示了计算当前时间向后10小时的时间。

其本上常用的类有:datetime和timedelta两个。它们之间可以相互加减。每个类都有一些方法和属性可以查看具体的值,如datetime可以查看:天数(day),小时数(hour),星期几(weekday())等timedelta可以查看:天数(days),秒数(seconds)等。

# time模块实现, 也是自带的

# 字符串不好计算~但是时间戳是固定的呀...

# 计算结果中, 假定今天24日, 输入24, 输出0天, 输入25, 输出-1天

import time

def f(tm):

    stamp = time.mktime(time.strptime(tm, "%Y%m%d"))

    diff = int((time.time() - stamp) // 86400)

    if diff <= 180:

        return {tm: str(diff)}

    else:

        d = {}

        while diff > 180:

            d[tm] = 180

            stamp += 180 * 86400

            diff = int((time.time() - stamp) // 86400)

            # 注意这里time.gmtime()返回的是0时区日期, 需要处理时区问题

            tm = time.strftime("%Y%m%d", time.gmtime(stamp - time.timezone))

        else:

            d[tm] = str(diff)

            return d

if __name__ == '__main__':

    tm = '20160325'

    print(f(tm))

    tm = '20171015'

    print(f(tm))

# 结果输出, 注意: 字典是没有固定顺序的

'''

{'20160921': 180, '20170320': 180, '20170916': '38', '20160325': 180}

{'20171015': '9'}

'''