python datetime时间时区格式的相互转换

可直接调用,实现时间和时区的相互转换

from __future__ import print_function
import pytz
import calendar
import time
import datetime
LOCAL_TIME_ZONE=pytz.timezone('Asia/Shanghai')
UTC_TIME_ZONE=pytz.utc

class TimeChange(object):
    @staticmethod
    def utc_dt_to_local_dt(dtUtc):
        """
        将从cassandra数据库中得到的没有时区信息的ts(实际上是utc时区的)
        转换为本地时区显示的时间
        args:
            dtUtc: utc时区的时间,datetime类型
                直接查询cassandra数据库时得到的时间戳类型的时间其实都是datetime类型
        returns:
            dtLocal: 北京时区的事件,datetime类型
        """
        tmpTs2=UTC_TIME_ZONE.localize(dtUtc)
        tmpTsNew=tmpTs2.astimezone(LOCAL_TIME_ZONE)
        return tmpTsNew

    @staticmethod
    def utc_dt_to_ts(dtUtcTime):
        """
        将datetime类型的utc时间转换成时间戳
        :param dtUtcTime: datetime类型
        :return: 时间戳,毫秒级
        """
        return int(calendar.timegm(dtUtcTime.timetuple()))*1000

    @staticmethod
    def utc_str_to_ts(sUtcTime):
        """
        将格式为‘2018-09-12 00:00:00+0000'的utc时间转换为时间戳
        :param sUtcTime: 字符串类型的utc时间
        :return:时间戳
        """
        dtUtcTime=datetime.datetime.strptime(sUtcTime[0:19], '%Y-%m-%d %H:%M:%S')
        return TimeChange.utc_dt_to_ts(dtUtcTime)

    @staticmethod
    def local_dt_to_ts(dtLocalTime):
        """
        将datetime类型的本地时间转换成时间戳
        :param dtLocalTime: datetime类型
        :return: 时间戳
        """
        return int(time.mktime(dtLocalTime.timetuple()))*1000

    @staticmethod
    def local_str_to_ts(sLocalTime):
        """
        将格式为'2018-09-12 00:00:00+0800'的本地时间转换为时间戳
        :param sLocalTime: 字符串类型的本地时间
        :return: 时间戳
        """
        dtLocalTime=datetime.datetime.strptime(sLocalTime[0:19], '%Y-%m-%d %H:%M:%S')
        return TimeChange.local_dt_to_ts(dtLocalTime)

    @staticmethod
    def ts_to_utc_str(iTs):
        """
        将时间戳转成utc时间的字符串
        :param iTs: 时间戳(单位毫秒)
        :return: 字符串类型的utc时间
        """
        dtTime=datetime.datetime.utcfromtimestamp(iTs / 1000)
        return dtTime.strftime('%Y-%m-%d %H:%M:%S+0000')

    @staticmethod
    def ts_to_local_str(iTs):
        """
        将时间戳转成本地时间的字符串
        :param iTs: 时间戳(单位毫秒)
        :return: 字符串类型的local时间
        """
        dtTime=datetime.datetime.fromtimestamp(iTs/1000)
        return dtTime.strftime('%Y-%m-%d %H:%M:%S+0800')

    @staticmethod
    def to_utc_dt(tsOne):
        """
        根据数据的时间,转换为utc
        :param tsOne:
        :return:
        """



if __name__=="__main__":
    import datetime
    x=datetime.datetime.now()
    print(TimeChange.utc_dt_to_ts(x))
    y=TimeChange.utc_dt_to_local_dt(x)
    print(type(y))
    print(y)
    print("all over!")
            
    

你可能感兴趣的:(数据处理)