date.py 852 B

12345678910111213141516171819202122232425262728293031323334353637
  1. # -*- coding: utf-8 -*-
  2. from typing import Optional
  3. import arrow
  4. TIME_FMT = "YYYYMMDDHHmmss"
  5. def get_time_str(
  6. delta: int = 0, flag: str = "now", fmt: Optional[str] = TIME_FMT
  7. ) -> str:
  8. """
  9. Return a Beijing time strings.
  10. :param delta: time delta(seconds)
  11. :param flag:
  12. :param fmt: time string's format
  13. :return: a '%Y%m%d%H%M%S' format strings
  14. """
  15. utc = arrow.utcnow()
  16. local = utc.to("Asia/Shanghai")
  17. if flag == "ago":
  18. delta = -delta
  19. t = local.shift(seconds=delta)
  20. elif flag == "later":
  21. t = local.shift(seconds=delta)
  22. else:
  23. t = local
  24. time_str = t.format(fmt)
  25. return time_str
  26. def get_quarter_minutes(time_str: str) -> str:
  27. temp = arrow.get(time_str, TIME_FMT).timestamp() // (15 * 60) * (15 * 60)
  28. return arrow.get(temp).time().strftime("%H%M%S")