date.py 844 B

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