尝试将时区从UTC转换为EST

时间:2019-10-18 16:05:15

标签: python python-3.x

通过API提取的时间向我显示了UTC时区,我无法将其转换为东部时区。这是我的代码。

def convert_since():
  current_utc_time = packages_json['query']['since']
  print(current_utc_time)    
  new_zone = current_utc_time.replace("T", " ").replace("Z", " ")
  print(new_zone)                                         
  dt_est = new_zone.astimezone(pytz.timezone('US/Eastern'))
  print(dt_est)
  # return current_utc_time[:-1]

当前输出2019-10-18 14:30:00并且我期望东部时区有新的输出。

AttributeError:'str'对象没有属性'astimezone'

2 个答案:

答案 0 :(得分:1)

您需要将current_utc_time = packages_json['query']['since']转换为日期时间。根据该字符串的格式,您可以使用datetime.strptime对其进行解析。您还需要使用.replace将当前日期时间转换为utc:

from datetime import datetime
import pytz

current_utc_time = '2019-10-18T14:30:00Z' # packages_json['query']['since']
new_zone = current_utc_time.replace("T", " ").replace("Z", "")
print(new_zone)
dt_est = datetime.strptime(new_zone, '%Y-%m-%d %H:%M:%S').replace(tzinfo=pytz.utc).astimezone(pytz.timezone('US/Eastern'))
print(dt_est)

输出:

2019-10-18 14:30:00
2019-10-18 10:30:00-04:00

您也可以取出字符串.replace,然后在strptime中将其添加为格式:

from datetime import datetime
import pytz


current_utc_time = '2019-10-18T14:30:00Z' # packages_json['query']['since']
print(current_utc_time)
dt_est = datetime.strptime(current_utc_time, '%Y-%m-%dT%H:%M:%SZ').replace(tzinfo=pytz.utc).astimezone(pytz.timezone('US/Eastern'))
print(dt_est)

答案 1 :(得分:0)

因此,变量$regex = [regex]',"[^"\r\n]*\r\n[^"]*",' $callback = { param($m) $m.Value.Replace("`r`n", "") } $newfilecontents = $regex.Replace($filecontents, $callback) 是一个字符串,并且您正在调用方法new_zone,该方法要求.astimezone为日期时间格式。

尝试:

new_zone