将UTC日期时间列转换为IST数据时间

时间:2019-08-21 06:40:50

标签: python-3.x

我有df(.xlsx格式),日期列为UTC格式

date
2018-07-31 00:00
2018-07-31 00:10    
2018-07-31 00:20    
2018-07-31 00:30    
2018-07-31 00:40

我想转换为如下所示的IST(+5:30)格式

date
2018-07-31 05:30
2018-07-31 05:40    
2018-07-31 05:50    
2018-07-31 06:00    
2018-07-31 06:10

many solutions available on stack overflow but its does not match with my criteria.

1 个答案:

答案 0 :(得分:4)

这是使用datetime.timedelta的一种方法。

例如:

import datetime
data = ["2018-07-31 00:00", "2018-07-31 00:10", "2018-07-31 00:20", "2018-07-31 00:30", "2018-07-31 00:40"]
for i in data:
    print( datetime.datetime.strptime(i, "%Y-%m-%d %H:%M") + datetime.timedelta(hours=5, minutes=30) )

输出:

2018-07-31 05:30:00
2018-07-31 05:40:00
2018-07-31 05:50:00
2018-07-31 06:00:00
2018-07-31 06:10:00

使用pytz模块。

例如:

import datetime
from pytz import timezone, utc

tz = timezone('Asia/Kolkata')
data = ["2018-07-31 00:00", "2018-07-31 00:10", "2018-07-31 00:20", "2018-07-31 00:30", "2018-07-31 00:40"]
for i in data:
    print( datetime.datetime.strptime(i, "%Y-%m-%d %H:%M").replace(tzinfo=utc).astimezone(tz) )

输出:

2018-07-31 05:30:00+05:30
2018-07-31 05:40:00+05:30
2018-07-31 05:50:00+05:30
2018-07-31 06:00:00+05:30
2018-07-31 06:10:00+05:30

熊猫DF

import pandas as pd

data = ["2018-07-31 00:00", "2018-07-31 00:10", "2018-07-31 00:20", "2018-07-31 00:30", "2018-07-31 00:40"]
df = pd.DataFrame({"Date": data})
df["Date_IST"] = pd.to_datetime(df["Date"]) + pd.DateOffset(hours=5, minutes=30)
print(df)

输出:

               Date            Date_IST
0  2018-07-31 00:00 2018-07-31 05:30:00
1  2018-07-31 00:10 2018-07-31 05:40:00
2  2018-07-31 00:20 2018-07-31 05:50:00
3  2018-07-31 00:30 2018-07-31 06:00:00
4  2018-07-31 00:40 2018-07-31 06:10:00