1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- # time: 2023/3/22 17:17
- # file: dpdUtils.py
- # author: David
- # company: shenyang JY
- import time, datetime
- class ValidationError(Exception):
- def __init__(self, message):
- self.message = message
- def timestamp_to_datetime(ts):
- if type(ts) is not int:
- raise ValueError("timestamp-时间格式必须是整型")
- if len(str(ts)) == 13:
- return datetime.datetime.fromtimestamp(ts/1000)
- elif len(str(ts)) == 10:
- return datetime.datetime.fromtimestamp(ts)
- else:
- raise ValueError("timestamp-时间格式长度错误")
- def datetime_to_timestamp(dt, len):
- if len not in (10, 13):
- raise ValueError("timestamp-时间戳转换长度错误")
- if len == 10:
- return int(round(time.mktime(dt.timetuple())))
- else:
- return int(round(time.mktime(dt.timetuple()))*1000)
- def datetime_to_timestr(dt):
- return int(dt.strftime('%m%d%H%M'))
- def timestr_to_datetime(time_data):
- """
- 将时间戳或时间字符串转换为datetime.datetime类型
- :param time_data: int or str
- :return:datetime.datetime
- """
- if isinstance(time_data, float):
- result = timestamp_to_datetime(int(time_data))
- elif isinstance(time_data, int):
- result = timestamp_to_datetime(time_data)
- elif isinstance(time_data, str):
- if len(time_data) == 10:
- result = datetime.datetime.strptime(time_data, '%d/%m/%Y')
- # result = datetime.datetime.strptime(time_data, '%Y-%m-%d')
- elif len(time_data) in {17, 18, 19}:
- # result = datetime.datetime.strptime(time_data, '%d/%m/%Y %H:%M:%S') # strptime字符串解析必须严格按照字符串中的格式
- result = datetime.datetime.strptime(time_data, '%Y-%m-%d %H:%M:%S')
- else:
- raise ValidationError("时间字符串长度不满足要求!")
- return result
- def timestamp_to_timestr(t):
- return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(t))
|