Python常用的日期时间处理方法示例

时间:2022-04-29 16:12:52
  1. #-*- coding: utf-8 -*- 
  2. import datetime 
  3.   
  4.   
  5. #给定日期向后N天的日期 
  6. def dateadd_day(days): 
  7.   d1 = datetime.datetime.now() 
  8.   d3 = d1 + datetime.timedelta(days) 
  9.   return d3 
  10.   
  11.   
  12. #昨天 
  13. def getYesterday(): 
  14.   today = datetime.date.today() 
  15.   oneday = datetime.timedelta(days=1) 
  16.   yesterday = today - oneday 
  17.   return yesterday 
  18.   
  19.   
  20. #今天 
  21. def getToday(): 
  22.   return datetime.date.today() 
  23.   
  24.   
  25. #获取给定参数的前几天的日期,返回一个list 
  26. def getDaysBefore(num): 
  27.   today = datetime.date.today() 
  28.   oneday = datetime.timedelta(days=1) 
  29.   li = [] 
  30.   for i in range(0, num): 
  31.     #今天减一天,一天一天减 
  32.     today = today - oneday 
  33.     #把日期转换成字符串 
  34.     li.append(datetostr(today)) 
  35.   return li 
  36.   
  37.   
  38. #将字符串转换成datetime类型 
  39. def strtodatetime(datestr, format): 
  40.   return datetime.datetime.strptime(datestr, format) 
  41.   
  42.   
  43. #时间转换成字符串,格式为2015-02-02 
  44. def datetostr(date): 
  45.   return str(date)[0:10] 
  46.   
  47.   
  48. #时间转换成字符串,格式为2015-02-02 
  49. def datetostr_secod(date): 
  50.   return str(date)[0:19] 
  51.   
  52.   
  53. #两个日期相隔多少天,例:2015-2-04和2015-3-1 
  54. def datediff(beginDate, endDate): 
  55.   format = "%Y-%m-%d" 
  56.   bd = strtodatetime(beginDate, format) 
  57.   ed = strtodatetime(endDate, format) 
  58.   oneday = datetime.timedelta(days=1) 
  59.   count = 0 
  60.   while bd != ed: 
  61.     ed = ed - oneday 
  62.     count += 1 
  63.   return count 
  64.   
  65.   
  66. #两个日期之间相差的秒 
  67. def datediff_seconds(beginDate, endDate): 
  68.   format = "%Y-%m-%d %H:%M:%S" 
  69.   if " " not in beginDate or ':' not in beginDate: 
  70.     bformat = "%Y-%m-%d" 
  71.   else
  72.     bformat = format 
  73.   if " " not in endDate or ':' not in endDate: 
  74.     eformat = "%Y-%m-%d" 
  75.   else
  76.     eformat = format 
  77.   starttime = strtodatetime(beginDate, bformat) 
  78.   endtime = strtodatetime(endDate, eformat) 
  79.   ret = endtime - starttime 
  80.   return ret.days * 86400 + ret.seconds 
  81.   
  82.   
  83. #获取两个时间段的所有时间,返回list 
  84. def getDays(beginDate, endDate): 
  85.   format = "%Y-%m-%d" 
  86.   begin = strtodatetime(beginDate, format) 
  87.   oneday = datetime.timedelta(days=1) 
  88.   num = datediff(beginDate, endDate) + 1 
  89.   li = [] 
  90.   for i in range(0, num): 
  91.     li.append(datetostr(begin)) 
  92.     begin = begin + oneday 
  93.   return li 
  94.   
  95.   
  96. #获取当前年份 是一个字符串 
  97. def getYear(date=datetime.date.today()): 
  98.   return str(date)[0:4] 
  99.   
  100.   
  101. #获取当前月份 是一个字符串 
  102. def getMonth(date=datetime.date.today()): 
  103.   return str(date)[5:7] 
  104.   
  105.   
  106. #获取当前天 是一个字符串 
  107. def getDay(date=datetime.date.today()): 
  108.   return str(date)[8:10] 
  109.   
  110.   
  111. #获取当前小时 是一个字符串 
  112. def getHour(date=datetime.datetime.now()): 
  113.   return str(date)[11:13] 
  114.   
  115.   
  116. #获取当前分钟 是一个字符串 
  117. def getMinute(date=datetime.datetime.now()): 
  118.   return str(date)[14:16] 
  119.   
  120.   
  121. #获取当前秒 是一个字符串 
  122. def getSecond(date=datetime.datetime.now()): 
  123.   return str(date)[17:19] 
  124.   
  125.   
  126. def getNow(): 
  127.   return datetime.datetime.now() 
  128.   
  129.   
  130. print dateadd_day(10) 
  131. #2015-02-14 16:41:13.275000 
  132.   
  133. print getYesterday() 
  134. #2015-02-03 
  135.   
  136. print getToday() 
  137. #2015-02-04 
  138.   
  139. print getDaysBefore(3) 
  140. #['2015-02-03', '2015-02-02', '2015-02-01'] 
  141.   
  142. print datediff('2015-2-01''2015-10-05'
  143. #246 
  144.   
  145. print datediff_seconds('2015-02-04''2015-02-05'
  146. #86400 
  147.   
  148. print datediff_seconds('2015-02-04 22:00:00''2015-02-05'
  149. #7200 
  150.   
  151. print getDays('2015-2-03''2015-2-05'
  152. #['2015-02-03', '2015-02-04', '2015-02-05'] 
  153.   
  154. print datetostr_secod(getNow()) 
  155. #2015-02-04 16:46:47 
  156.   
  157. print str(getYear(dateadd_day(-50))) + '-'
  158.   + getMonth() + '-'
  159.   + getDay() + ' '
  160.   + getHour() + ':'
  161.   + getMinute() + ':'
  162.   + getSecond() 
  163. #2014-02-04 16:59:04 
  164.   
  165. print getNow() 
  166. #2015-02-04 16:46:47.454000