date_util.py 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. __title__ = '操作时间的工具类'
  5. @Time : 2020/9/26 19:44
  6. @Author : Kenny-PC
  7. @Software: PyCharm
  8. # code is far away from bugs with the god animal protecting
  9. I love animals. They taste delicious.
  10. ┏┓ ┏┓
  11. ┏┛┻━━━┛┻┓
  12. ┃ ☃ ┃
  13. ┃ ┳┛ ┗┳ ┃
  14. ┃ ┻ ┃
  15. ┗━┓ ┏━┛
  16. ┃ ┗━━━┓
  17. ┃ 神兽保佑 ┣┓
  18. ┃ 永无BUG! ┏┛
  19. ┗┓┓┏━┳┓┏┛
  20. ┃┫┫ ┃┫┫
  21. ┗┻┛ ┗┻┛
  22. """
  23. import datetime
  24. import time
  25. # ==========================
  26. # ========== time ==========
  27. # ==========================
  28. def getCurrentMilliSecondTime():
  29. """
  30. description: 获取当前时间-毫秒级
  31. return: 1557730376981 -> str
  32. """
  33. timestamps = str(round(time.time() * 1000))
  34. return timestamps
  35. def getCurrentSecondTime():
  36. """
  37. description: 获取当前时间-秒级
  38. return: 1557730377 -> int
  39. """
  40. timestamps = int(time.time())
  41. return timestamps
  42. def getCurrentTimeTuple(times=time.time()):
  43. """
  44. description: 接受秒级时间戳并返回时间元组(与mktime(tuple)相反)
  45. times: 默认当前时间 可传second
  46. return: (tm_year=2019, tm_mon=5, tm_mday=13, tm_hour=10, tm_min=9, tm_sec=18, tm_wday=0, tm_yday=133, tm_isdst=0) -> tuple
  47. tips: time.localtime() 不传参则取当前时间
  48. """
  49. timestamps = time.localtime(times)
  50. return timestamps
  51. def getTimeByTuple(tupleTime=time.localtime()):
  52. """
  53. description: 接受时间元组并返回秒级时间戳(与localtime(sec)相反)
  54. tupleTime: 默认当前时间的元组 可通过time.localtime() or datetime.datetime.now().timetuple()获取
  55. return: 1557733061 -> str
  56. """
  57. timestamps = str(round(time.mktime(tupleTime)))
  58. return timestamps
  59. def getCurrentFormatTimeStr(times=time.time()):
  60. """
  61. description: 将指定时间元组格式化为字符串
  62. times: 默认当前时间 可传second
  63. return: 2019-05-13 15:00:47 -> str
  64. tips: %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31)
  65. %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) %w 星期(0-6)
  66. """
  67. timestamps = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(times))
  68. return timestamps
  69. def getCurrentTimeTupleByFormatStr(time_str=str(datetime.datetime.now()).split(".")[0],
  70. format_type="%Y-%m-%d %H:%M:%S"):
  71. """
  72. description: 接受格式化字符串返回时间元组
  73. time_str: 格式化字符串 如:2019-05-13 15:00:47 默认当前时间
  74. format_type: 格式化规则 如:%Y-%m-%d %H:%M:%S 默认%Y-%m-%d %H:%M:%S
  75. return: (tm_year=2019, tm_mon=5, tm_mday=13, tm_hour=10, tm_min=9, tm_sec=18, tm_wday=0, tm_yday=133, tm_isdst=0) -> tuple
  76. """
  77. return time.strptime(time_str, format_type)
  78. def getCurrentTimeStr():
  79. """
  80. description: 获取当前时间的可读形式字符串
  81. return: Mon May 13 11:27:42 2019 -> str
  82. """
  83. return time.ctime()
  84. def getCurrentTimeStrByTuple(tupleTime=time.localtime()):
  85. """
  86. description: 获取指定时间的可读形式字符串
  87. tupleTime: 时间元组 可通过time.localtime() or datetime.datetime.now().timetuple()获取 默认当前时间的元组
  88. return: Mon May 13 11:27:42 2019 -> str
  89. """
  90. return time.asctime(tupleTime)
  91. def sleepTime():
  92. """
  93. description: 推迟调用线程的运行
  94. """
  95. for i in range(4):
  96. print(i)
  97. time.sleep(3)
  98. # ======================
  99. # ====== datetime ======
  100. # ======================
  101. def getNowDateTime():
  102. """
  103. description: 获取当前日期&时间
  104. return: 2019-05-13 14:41:15 -> str
  105. """
  106. timestamps = str(datetime.datetime.now()).split(".")[0]
  107. return timestamps
  108. def getNowTime():
  109. """
  110. description: 获取当前时间
  111. return: 14:41:15 -> str
  112. """
  113. timestamps = str(datetime.datetime.now().time()).split(".")[0]
  114. return timestamps
  115. def getTodayDate():
  116. """
  117. description: 获取当前日期
  118. return: 2019-05-13 -> str
  119. tipe: datetime.datetime.now().date()有相同效果
  120. """
  121. timestamps = str(datetime.date.today())
  122. return timestamps
  123. def getTimeDate(times=time.time()):
  124. """
  125. description: 获取指定时间戳的日期
  126. time: 秒 默认当前时间
  127. return: 2019-05-13 -> str
  128. tips: 一天86400秒
  129. """
  130. timestamps = str(datetime.date.fromtimestamp(round(times)))
  131. return timestamps
  132. def getAnyDateTime(day, hour=0, min=0, sec=0):
  133. """
  134. description: 获取距离现在时间的任意时间的日期&时间
  135. day: 天数 1代表当前时间+1天 -1代表当前时间-1天
  136. hour: 小时 2代表当前时间+2h -2代表当前时间-2h 默认=0
  137. min: 分钟 30代表当前时间+30min -30代表当前时间-30m 默认=0
  138. sec: 秒 120代表当前时间+120s -120代表当前时间-120s 默认=0
  139. return: 2019-05-15 15:37:41 -> str
  140. """
  141. return str(datetime.datetime.now() + datetime.timedelta(days=day, hours=hour, minutes=min, seconds=sec)).split(".")[
  142. 0]
  143. def getSecondsToDatetime(seconds=getCurrentSecondTime(), datetime_format="%Y-%m-%d %H:%M:%S"):
  144. """
  145. description: 秒/时间戳转日期字符串
  146. seconds: 时间戳 默认为当前时间戳
  147. datetime_format: 格式字符串 默认=%Y-%m-%d %H:%M:%S
  148. return: 2019-05-15 15:37:41 -> str
  149. """
  150. return time.strftime(datetime_format, time.localtime(seconds))
  151. def getAnyDateSecondTime(day, hour=0, min=0, sec=0):
  152. """
  153. description: 获取距离现在时间的任意时间的秒数
  154. day: 天数 1代表当前时间+1天 -1代表当前时间-1天
  155. hour: 小时 2代表当前时间+2h -2代表当前时间-2h 默认=0
  156. min: 分钟 30代表当前时间+30min -30代表当前时间-30m 默认=0
  157. sec: 秒 120代表当前时间+120s -120代表当前时间-120s 默认=0
  158. return: 1557902182 -> str
  159. """
  160. anyDay = datetime.datetime.now() + datetime.timedelta(days=day, hours=hour, minutes=min, seconds=sec)
  161. return str(round(time.mktime(anyDay.timetuple())))
  162. def getTodayStartTime():
  163. """
  164. description: 获取当天0点的时间戳
  165. return: 1557676800 -> str
  166. """
  167. return int(time.mktime(datetime.date.today().timetuple()))
  168. def getTodayEndTime():
  169. """
  170. description: 获取今天23点59分59秒的时间戳
  171. return: 1601049599 -> str
  172. """
  173. yesterday = datetime.date.today() + datetime.timedelta(days=1)
  174. return int(time.mktime(time.strptime(str(yesterday), '%Y-%m-%d'))) - 1
  175. def getYesterdayStartTime():
  176. """
  177. description: 获取昨天0点的时间戳
  178. return: 1557676800 -> int
  179. """
  180. yesterday = datetime.date.today() - datetime.timedelta(days=1)
  181. return int(time.mktime(time.strptime(str(yesterday), '%Y-%m-%d')))
  182. def getYesterdayEndTime():
  183. """
  184. description: 获取昨天23点59分59秒的时间戳
  185. return: 1601049599 -> int
  186. """
  187. return int(time.mktime(time.strptime(str(datetime.date.today()), '%Y-%m-%d'))) - 1
  188. def getTomorrowStartTime():
  189. """
  190. description: 获取明天0点的时间戳
  191. return: 1557676800 -> int
  192. """
  193. tomorrow = datetime.date.today() + datetime.timedelta(days=1)
  194. return int(time.mktime(time.strptime(str(tomorrow), '%Y-%m-%d')))
  195. def getTomorrowEndTime():
  196. """
  197. description: 获取明天23点59分59秒的时间戳
  198. return: 1601049599 -> str
  199. """
  200. yesterday = datetime.date.today() + datetime.timedelta(days=2)
  201. return int(time.mktime(time.strptime(str(yesterday), '%Y-%m-%d'))) - 1
  202. def getCurrentWeekTime():
  203. """
  204. description: 获取本周周一0点
  205. return: 1557676800 -> str
  206. tips: 可替换成: timestamps = time.mktime(time.strptime(time.strftime("%Y-%m-%d", time.localtime(times)), "%Y-%m-%d"))
  207. """
  208. week = int(time.strftime("%w", time.localtime()))
  209. times = round(time.time()) - (week - 1) * 86400
  210. timestamps = time.mktime(datetime.date.fromtimestamp(times).timetuple())
  211. return str(round(timestamps))
  212. def test():
  213. print(getCurrentMilliSecondTime())
  214. print(getCurrentSecondTime())
  215. print(getCurrentFormatTimeStr())
  216. print(getCurrentTimeTupleByFormatStr())
  217. print("=======")
  218. print(getCurrentTimeStr())
  219. print(getCurrentTimeStrByTuple(time.localtime()))
  220. print(getTimeByTuple(time.localtime()))
  221. print("=======")
  222. print(getNowDateTime())
  223. print(getNowTime())
  224. print(getNowDateTime())
  225. print(getTodayDate())
  226. print(getTimeDate(time.time() - 86400))
  227. print("=======")
  228. print(getAnyDateTime(2))
  229. print(getAnyDateSecondTime(2))
  230. print("=======")
  231. print(getTodayStartTime())
  232. print(getCurrentWeekTime())
  233. print('昨天')
  234. print(getYesterdayStartTime(), time.strftime("%Y-%m-%dT%H:%M:%S", time.localtime(getYesterdayStartTime())))
  235. print(getYesterdayEndTime(), time.strftime("%Y-%m-%dT%H:%M:%S", time.localtime(getYesterdayEndTime())))
  236. print('今天')
  237. print(getTodayStartTime(), time.strftime("%Y-%m-%dT%H:%M:%S", time.localtime(getTodayStartTime())))
  238. print(getTodayEndTime(), time.strftime("%Y-%m-%dT%H:%M:%S", time.localtime(getTodayEndTime())))
  239. print('明天')
  240. print(getTomorrowStartTime(), time.strftime("%Y-%m-%dT%H:%M:%S", time.localtime(getTomorrowStartTime())))
  241. print(getTomorrowEndTime(), time.strftime("%Y-%m-%dT%H:%M:%S", time.localtime(getTomorrowEndTime())))
  242. return '测试完毕!'
  243. if __name__ == '__main__':
  244. print(test())