python 计算时间差,时间加减运算代码

Python017

python 计算时间差,时间加减运算代码,第1张

1、方便的计算两个时间的差,如两个时间相差几天,几小时:

2、python计算两个时间之间的秒数

3、时间相加

计算当前时间向后10天的时间。参数可以是days, hours,minutes,seconds,microseconds,如果是负数就是向前多少时间其本上常用的类: datetime和timedelta两个。它们之间可以相互加减。每个类都有一些方法和属性可以查看具体的值,如 datetime可以查看:天数(day),小时数(hour),星期几(weekday())等timedelta可以查看:天数(days),秒数 (seconds)等

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

# 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'}

'''