使用python将UTC时间转换为经度和纬度的本地时间

时间:2017-07-31 05:54:13

标签: python datetime utc timezone-offset

我正在使用日出日落api来获得日出和日落。

>>> url = "https://api.sunrise-sunset.org/json?lat=36.7201600&lng=-4.4203400&date=2017-07-31"
>>> import urllib2
>>> import json
>>> resp = urllib2.urlopen(url)
>>> data = json.load(resp)
>>> sunriseUtc = data.get("results").get("sunrise")
>>> sunriseUtc
u'5:23:18 AM'

我想将此UTC时间转换为在URL中传递的Long,Lat的本地时间。即不是用户本地。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

与使用网页查询相比,您可能最好使用pyephem,pip install pyephem能够为给定位置提供日出/设定时间(以及更多),(lat / (长),基于物理价值。

>>> import ephem
>>> sun = ephem.Sun()
>>> greenwich = ephem.Observer()
>>> greenwich.lat = '51:28:38'
>>> print(greenwich.horizon)
0:00:00.0
>>> greenwich.date = '2007/10/1'
>>> r1 = greenwich.next_rising(sun)
>>> greenwich.pressure = 0
>>> greenwich.horizon = '-0:34'
>>> greenwich.date = '2007/10/1'
>>> r2 = greenwich.next_rising(sun)
>>> print('Visual sunrise: %s' % r1)
Visual sunrise: 2007/10/1 05:59:30
>>> print('Naval Observatory sunrise: %s' % r2)
Naval Observatory sunrise: 2007/10/1 05:59:50

答案 1 :(得分:0)

使用Python 3.8:

要开始在下面添加以下模块:

  
    
      

导入时间

             

从本地时间导入时间

    
  

接下来,调用localtime()方法并插入您的时间(在本例中为变量“ sunriseUtc”):

  
    
      

localtime(sunriseUtc)。

    
  

就是这样。

如果您想格式化时间(如何显示时间),则需要从时间模块中导入strftime(缩写为字符串格式时间)。然后为您的时间设置格式。然后从上方传递相同的参数: 例如

  
    
      

从时间导入strftime

             

strftime(“%m /%d /%Y%I:%M:%S%p”,本地时间(sunriseUtc))

    
  

'05 / 12/2019 05:57:05 AM'

当使用请求模块从openweathermap.org的API下载数据时,这对我有用。

如果需要更多支持,请参阅时间模块的文档: C++ Windows - How to get process path from its PID

注意:我的项目是基于“项目:获取当前天气数据”中的示例构建的: https://docs.python.org/2/library/time.html#time.strftime

https://automatetheboringstuff.com/chapter14/