data_utils.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # time: 2023/3/22 17:17
  4. # file: dpdUtils.py
  5. # author: David
  6. # company: shenyang JY
  7. import time, datetime
  8. class ValidationError(Exception):
  9. def __init__(self, message):
  10. self.message = message
  11. def timestamp_to_datetime(ts):
  12. if type(ts) is not int:
  13. raise ValueError("timestamp-时间格式必须是整型")
  14. if len(str(ts)) == 13:
  15. return datetime.datetime.fromtimestamp(ts/1000)
  16. elif len(str(ts)) == 10:
  17. return datetime.datetime.fromtimestamp(ts)
  18. else:
  19. raise ValueError("timestamp-时间格式长度错误")
  20. def datetime_to_timestamp(dt, len):
  21. if len not in (10, 13):
  22. raise ValueError("timestamp-时间戳转换长度错误")
  23. if len == 10:
  24. return int(round(time.mktime(dt.timetuple())))
  25. else:
  26. return int(round(time.mktime(dt.timetuple()))*1000)
  27. def datetime_to_timestr(dt):
  28. return int(dt.strftime('%m%d%H%M'))
  29. def timestr_to_datetime(time_data):
  30. """
  31. 将时间戳或时间字符串转换为datetime.datetime类型
  32. :param time_data: int or str
  33. :return:datetime.datetime
  34. """
  35. if isinstance(time_data, float):
  36. result = timestamp_to_datetime(int(time_data))
  37. elif isinstance(time_data, int):
  38. result = timestamp_to_datetime(time_data)
  39. elif isinstance(time_data, str):
  40. if len(time_data) == 10:
  41. result = datetime.datetime.strptime(time_data, '%d/%m/%Y')
  42. # result = datetime.datetime.strptime(time_data, '%Y-%m-%d')
  43. elif len(time_data) in {17, 18, 19}:
  44. # result = datetime.datetime.strptime(time_data, '%d/%m/%Y %H:%M:%S') # strptime字符串解析必须严格按照字符串中的格式
  45. result = datetime.datetime.strptime(time_data, '%Y-%m-%d %H:%M:%S')
  46. else:
  47. raise ValidationError("时间字符串长度不满足要求!")
  48. return result
  49. def timestamp_to_timestr(t):
  50. return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(t))