使用Python实现GMT和UTC和UNIX时间戳相互转换

GMT:即格林尼治标准时间

UTC:即协调世界时
时区(使用GMT):英国(格林尼治天文台旧址)为零时区(GMT+00)
                                 中国                               北京处于东8区(GMT+08)

UNIX时间戳:GMT/UTC时间「1970-01-01T00:00:00」为起点
获取现在的Unix时间戳:先 import time 然后 time.time()
Unix时间戳→ 普通时间: import time 然后 time.gmtime(Unix timestamp)
普通时间 → Unix时间戳: import time 然后 int(time.mktime(time.strptime('YYYY-MM-DD HH:MM:SS', '%Y-%m-%d %H:%M:%S')))

timedelta(hours=8)只能数组操作

date = ((datetime(2020,1,1,0,0,0)-timedelta(hours=8)).strftime("%Y-%m-%dT%H:%M:%S.000Z"))将指定时间转换为格林尼治

date = ((datetime.now()-timedelta(hours=8)).strftime("%Y-%m-%dT%H:%M:%S.000Z"))将本地当前时间转换为格林尼治

Beijingtime = datetime.datetime.fromtimestamp(timestamp)
Londontime = datetime.datetime.utcfromtimestamp(timestamp)

"""
时间转换操作
"""
from datetime import datetime, timedelta
import time


def get_timestamp():
    """
    将本地时间转换为iso861timestamp
    :return:
    """
    now = datetime.now()
    t = now.isoformat("T", "milliseconds")
    return t + "Z"


def TimestampIso8601_to_BeijingTime(timestamp_iso8601):
    """
    将iso861timestamp转换为北京时间
    :return:
    """
    if "." not in timestamp_iso8601:    # 当毫秒为0
        utc = datetime.strptime(timestamp_iso8601, '%Y-%m-%dT%H:%M:%SZ')
    else:
        utc = datetime.strptime(timestamp_iso8601, '%Y-%m-%dT%H:%M:%S.%fZ')
    now_time = (utc + timedelta(hours=8)).replace(microsecond=0)
    return now_time


def datetime_to_ISO8601(datetime_type):
    """
    :param datetime_type:
    :return:        将datetime类型时间转换为iso8601格式时间
    """
    iso8601_type = (datetime_type - timedelta(hours=8)).isoformat("T", "milliseconds") + "Z"
    return iso8601_type


def string_to_datetime(string):
    """
    :param string:
    :return:       将字符串转换为datatime类型时间  秒级
    """
    datetime_type = datetime.strptime(string, '%Y-%m-%d %H:%M:%S')
    return datetime_type


def datetime_to_string(_datetime):
    str_time = _datetime.strftime('%Y-%m-%d %H:%M:%S')
    return str_time


def timestamp_to_datetime(timestamp):
    '''
    timestamp   ----->  BeijingTime
    :param timestamp:
    :return:
    '''
    utc = datetime.fromtimestamp(timestamp / 1000).replace(second=0, microsecond=0)      # 将时间戳转换为北京时间
    BeijingTime = utc + timedelta(hours=8)
    return BeijingTime


def string_to_timestamp(string):
    """
    string  ----->  timestamp
    :param string:
    :return:
    """
    timestamp = int(time.mktime(time.strptime(string, "%Y-%m-%d %H:%M:%S"))) * 1000
    return timestamp

 

你可能感兴趣的:(时间周期转换)