LocalDateTimeUtil.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #!/usr/bin/python3.6
  2. # -*- coding: utf-8 -*-
  3. #
  4. # Copyright (C) 2022 #
  5. # @Time : 2022/3/26 16:20
  6. # @Author : ming
  7. # @Email : zhangdongming@asj6.wecom.work
  8. # @File : LocalDateTimeUtil.py
  9. # @Software: PyCharm
  10. import datetime
  11. import time
  12. def get_last_first_date_and_last_date(n):
  13. """
  14. 获取前n周开始时间和结束时间,参数n:代表前n周
  15. """
  16. now = datetime.datetime.now()
  17. # 上周第一天和最后一天
  18. before_n_week_start = now - datetime.timedelta(days=now.weekday() + 7 * n, hours=now.hour, minutes=now.minute,
  19. seconds=now.second, microseconds=now.microsecond)
  20. # last_week_end = now - timedelta(days=now.weekday() + 1)
  21. before_n_week_end = before_n_week_start + datetime.timedelta(days=6, hours=23, minutes=59, seconds=59)
  22. return before_n_week_start, before_n_week_end
  23. def get_today_date(timestamp=False):
  24. """
  25. 返回当天开始时间和结束时间
  26. Args:
  27. timestamp 是否返回时间戳
  28. returns:
  29. zero_today ,last_today
  30. """
  31. now = datetime.datetime.now()
  32. zero_today = now - datetime.timedelta(hours=now.hour, minutes=now.minute, seconds=now.second,
  33. microseconds=now.microsecond)
  34. last_today = zero_today + datetime.timedelta(hours=23, minutes=59, seconds=59)
  35. if timestamp:
  36. zero_today = int(time.mktime(zero_today.timetuple()))
  37. last_today = int(time.mktime(last_today.timetuple()))
  38. return zero_today, last_today
  39. return zero_today, last_today
  40. def get_last_month():
  41. """
  42. 获取前一个月时间
  43. returns:
  44. last_month_date
  45. """
  46. today = datetime.date.today() # 1. 获取「今天」
  47. last_month = today.replace(month=today.month - 1) # 2.获取前一个月
  48. last_month_date = last_month.strftime("%Y-%m-%d %H:%M:%S")
  49. return last_month_date
  50. def get_before_days_timestamp(timestamp, days=1):
  51. """
  52. 获取之前日期时间戳-秒级
  53. @param timestamp: 时间戳
  54. @param days: 天数
  55. @return: (timestamp - second * hour * days) 时间戳
  56. """
  57. if days:
  58. second = 3600
  59. hour = 24
  60. if days > 0:
  61. return timestamp - second * hour * days
  62. return 0
  63. def date_to_week(str_date):
  64. """
  65. 日期获取星期几
  66. @param str_date 日期 例:2022-03-03
  67. @return: int 1-7
  68. """
  69. if str_date:
  70. return datetime.datetime.strptime(str_date, "%Y-%m-%d").weekday() + 1
  71. return datetime.datetime.now().weekday() + 1
  72. def format_date_to_week(str_date, str_format):
  73. """
  74. 日期获取星期几
  75. @param str_format: %Y%m%d
  76. @param str_date 日期 例:2022-03-03
  77. @return: int 1-7
  78. """
  79. if str_date:
  80. return datetime.datetime.strptime(str_date, str_format).weekday() + 1
  81. return 0
  82. if __name__ == "__main__":
  83. val = format_date_to_week('20220417', '%Y%m%d')
  84. pfe = str(22162688)
  85. print(pfe[6:])
  86. now_time = int(time.time())
  87. date_time = datetime.datetime.fromtimestamp(now_time)
  88. print(date_to_week(str(date_time.date())))
  89. result = get_before_days_timestamp(now_time, 7)
  90. print(result)
  91. print(now_time - 3600 * 168)
  92. dd = datetime.date.today()
  93. print(type(dd))
  94. dd = str(dd)
  95. print(type(dd))
  96. week = date_to_week('2022-03-03')
  97. print(week)
  98. start_time, end_time = get_today_date(True)
  99. print('--- start_time = {} end_time = {}'.format(start_time, end_time))