from http.client import ImproperConnectionState
import time
import datetime
# 将格式化日期转换成时间戳
def str_to_stamp(str=None,format='%Y-%m-%d %H:%M:%S'):
    # 格式化好的时间转时间戳的,如果不传格式化好的时间,就返回当前的时间戳
    if str:
        return int(time.mktime(time.strptime(str,format)))
    else:
        return int(time.time())
# 将时间戳转换成格式化日期
def timestamp_to_str(timestamp=None, format='%Y-%m-%d %H:%M:%S'):
    if timestamp:
        time_tuple = time.localtime(timestamp)  # 把时间戳转换成时间元祖
        result = time.strftime(format, time_tuple)  # 把时间元祖转换成格式化好的时间
        return result
    else:
        return time.strptime(format)    
# 将ms格式化日期转换成ms时间戳
def ms_str_to_ms_stamp(timestr):
    """
    时间转毫秒级时间戳
    :param timestr:
    :return:
    """
    # timestr = '2019-01-14 15:22:18.123'
    # timestr = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
    datetime_obj = datetime.datetime.strptime(timestr, "%Y-%m-%d %H:%M:%S.%f")
    # print(datetime_obj)
    obj_stamp = int(time.mktime(datetime_obj.timetuple()) * 1000.0 + datetime_obj.microsecond / 1000.0)
    return obj_stamp

# 将时间戳转换成格式化日期
def ms_timestamp_to_str(timestamp=None, format='%Y-%m-%d %H:%M:%S.%f'):
    if timestamp:
        d = datetime.datetime.fromtimestamp(timestamp/1000)
        result = d.strftime(format)
        return result[:-3] #将小数后6位改为后3位
    else:
        return time.strptime(format)