time_format_util.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import datetime
  2. class TimeFormatUtil:
  3. @staticmethod
  4. def object_format_datetime(obj):
  5. """
  6. :param obj: 输入一个对象
  7. :return:对目标对象所有datetime类型的属性格式化
  8. """
  9. for attr in dir(obj):
  10. value = getattr(obj, attr)
  11. if isinstance(value, datetime.datetime):
  12. setattr(obj, attr, value.strftime('%Y-%m-%d %H:%M:%S'))
  13. return obj
  14. @staticmethod
  15. def list_format_datetime(lst):
  16. """
  17. :param lst: 输入一个嵌套对象的列表
  18. :return: 对目标列表中所有对象的datetime类型的属性格式化
  19. """
  20. for obj in lst:
  21. for attr in dir(obj):
  22. value = getattr(obj, attr)
  23. if isinstance(value, datetime.datetime):
  24. setattr(obj, attr, value.strftime('%Y-%m-%d %H:%M:%S'))
  25. return lst
  26. @classmethod
  27. def format_datetime_dict_list(cls, dicts):
  28. """
  29. 递归遍历嵌套字典,并将 datetime 值转换为字符串格式
  30. :param dicts: 输入一个嵌套字典的列表
  31. :return: 对目标列表中所有字典的datetime类型的属性格式化
  32. """
  33. result = []
  34. for item in dicts:
  35. new_item = {}
  36. for k, v in item.items():
  37. if isinstance(v, dict):
  38. # 递归遍历子字典
  39. new_item[k] = cls.format_datetime_dict_list([v])[0]
  40. elif isinstance(v, datetime.datetime):
  41. # 如果值是 datetime 类型,则格式化为字符串
  42. new_item[k] = v.strftime('%Y-%m-%d %H:%M:%S')
  43. else:
  44. # 否则保留原始值
  45. new_item[k] = v
  46. result.append(new_item)
  47. return result