zoukankan      html  css  js  c++  java
  • pandas之to_datetime时区转换

    from datetime import date, datetime, timedelta
        import time
        import pandas as pd
        from pandas.tseries.offsets import Hour, Minute, Second
        
        
        print(time.localtime()) # time.struct_time(tm_year=2019, tm_mon=11, tm_mday=12, tm_hour=18, tm_min=34, tm_sec=52, tm_wday=1, tm_yday=316, tm_isdst=0)
        print(datetime.now().timestamp()) # 1573554892.416593 带小时分秒的
        print(datetime.now().tzinfo)    # None
        print(datetime.now().timetz())  # 18:34:52.416593
        print(datetime.now().date())    # 2019-11-12
        print(datetime.now())  # 2019-11-12 18:34:52.416593
            
        # date
        fixdate = date.today()+timedelta(days=-1)
        # date convert to datetime
        dtt = datetime(fixdate.year, fixdate.month, fixdate.day)
        print(dtt)              # 2019-11-11 00:00:00
        print(dtt.tzinfo)       # None 默认没有时区信息
        s_ts = dtt.timestamp()  # 1573401600.0 UTC时间戳
        print('------------------pd.to_datetime--------------------------')
        # pandas需要自己处理时区问题,默认没有时区信息,可以先本地化tz_localize时区再转换成tz_convert目标时区
        pddt = pd.to_datetime(s_ts, utc=True, unit='s') 
        print(pddt.tzinfo)                        # UTC
        print(pddt.timestamp())                   # 1573401600.0 
        print(pddt)                               # 2019-11-10 16:00:00+00:00
        pddt = pd.to_datetime(s_ts, utc=False, unit='s')
        print(pddt.tzinfo)                        # None
        print(pddt.timestamp())                   # 1573401600.0
        print(pddt)                               # 2019-11-10 16:00:00 
        pddt = pd.to_datetime(s_ts, utc=False, unit='s').tz_localize('Asia/Shanghai') # 本地化成某个时区
        print(pddt.tzinfo)                        # Asia/Shanghai
        print(pddt.timestamp())                   # 1573372800.0 
        print(pddt)                               # 2019-11-10 16:00:00+08:00 
        pddt = pd.to_datetime(s_ts, utc=True, unit='s').tz_convert('Asia/Shanghai')  # 转换成某个时区
        print(pddt.tzinfo)                        # Asia/Shanghai
        print(pddt.timestamp())                   # 1573401600.0 
        print(pddt)                               # 2019-11-11 00:00:00+08:00 
        print('--------------------Hour(23) + Minute(59) + Second(59) --------------------------')
        sec = Hour(23) + Minute(59) + Second(59) 
        print(sec.freqstr) # 86399S 秒,结束带个S
        pddt = pd.to_datetime(s_ts+int(sec.freqstr[:-1]), utc=True, unit='s').tz_convert('Asia/Shanghai')
        print(pddt)              # 2019-11-11 23:59:59+08:00
        print(pddt.timestamp())  # 1573487999.0 
        
         # 这样算本来才是真正想要的目标时间戳,推荐使用这种方式
        dtt_hms = (dtt + Hour(23) + Minute(59) + Second(59)).tz_localize('Asia/Shanghai').tz_convert('utc').value/1000000000
        print(dtt_hms)           # 1573487999.0 2019-11-11 23:59:59+08:00
        
        # 这样算出为是目标时间多了8小时的时间戳
        dtt_hms = (dtt + Hour(23) + Minute(59) + Second(59)).value/1000000000
        print(dtt_hms)           # 1573516799.0  2019-11-12 07:59:59 
        exit(0)
  • 相关阅读:
    弄明白python reduce 函数
    Python 2与Python 3兼容性的写法,需要一个特殊的包 from __future__ import print_function 用法
    人工智能数学参考---8、常用激活函数
    常用激活函数(激励函数)理解与总结
    人工智能数学参考---7、核函数应用
    [粘贴]环绕闸极不能让三星在3nm工艺领先台积电
    查看java所有的线程信息
    【转载】 Sqlserver使用Left函数从最左边开始截取固定长度字符串
    值初始化和默认初始化的区别
    map的综合例子
  • 原文地址:https://www.cnblogs.com/zxpo/p/11844577.html
Copyright © 2011-2022 走看看