Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x localtime实际上没有提供localtime_Python 3.x_Raspberry Pi_Pyephem - Fatal编程技术网

Python 3.x localtime实际上没有提供localtime

Python 3.x localtime实际上没有提供localtime,python-3.x,raspberry-pi,pyephem,Python 3.x,Raspberry Pi,Pyephem,很明显,有一个时间模块可以与这个问题结合使用,但我还没有找到它。 我只是想在树莓圆周率上用Pyephem来找出我的经纬度坐标的日出和日落时间。 代码非常简单,如下所示: import ephem import datetime import time now = datetime.datetime.now() gmNow = time.mktime(time.localtime()) Vancouver = ephem.Observer() Vancouver.lat = 49.2878 V

很明显,有一个时间模块可以与这个问题结合使用,但我还没有找到它。 我只是想在树莓圆周率上用Pyephem来找出我的经纬度坐标的日出和日落时间。 代码非常简单,如下所示:

import ephem
import datetime 
import time
now = datetime.datetime.now()
gmNow = time.mktime(time.localtime()) 
Vancouver = ephem.Observer()
Vancouver.lat = 49.2878
Vancouver.horizon = 0
Vancouver.lon = -123.0502
Vancouver.elevation = 80
Vancouver.date = now
# Vancouver.date = time.localtime()

sun = ephem.Sun()

print("sunrise is at",ephem.localtime(Vancouver.next_rising(sun)))
print("sunset is going to be at ",ephem.localtime(Vancouver.next_setting(sun)))
print("now is ",now)
print("gmNow is",gmNow)
但是,当它运行8小时时,输出的是错误的。看来 ephem.localtime()实际上没有运行

pi@raspberrypi ~ $ sudo python3 vivarium_sun.py 
sunrise is at 2014-09-19 12:55:56.000004
sunset is going to be at  2014-09-19 00:52:30.000004
now is  2014-09-19 06:22:24.014859
gmNow is 1411132944.0
这让我快发疯了,很明显,这是一件很简单的事情,一旦弄明白了,我就要进入蜂群思维了

编辑**只需在Raspberry Pi的命令行中键入“date”即可返回以下结果:

pi@raspberrypi ~ $ date
Fri Sep 19 18:41:42 PDT 2014

这是准确的。

您应该将
datetime.utcnow()
传递给观察者,而不是本地时间

ephem
期望
纬度
经度
以弧度为单位如果以浮点形式传递,请改用字符串:

from datetime import datetime, timezone

import ephem

now = datetime.now(timezone.utc)
Vancouver = ephem.Observer()
Vancouver.lat = '49.2878'
Vancouver.horizon = 0
Vancouver.lon = '-123.0502'
Vancouver.elevation = 80
Vancouver.date = now
sun = ephem.Sun(Vancouver)

print("sunrise is at", ephem.localtime(Vancouver.next_rising(sun)))
print("sunset is going to be at ", 
      ephem.localtime(Vancouver.next_setting(sun)))
print("now is ",now.astimezone())
输出
您应该使用
time.time()
而不是
time.mktime(time.localtime())
后者可能在DST转换期间返回错误的结果。请参阅Python依赖于您的操作系统设置来确定本地时间的含义。因此,我们应该首先将Python排除在等式之外:如果您在Raspberry Pi上键入命令
date
,它的输出是什么-您可以将它粘贴到您的问题中吗?是的,您可以从底部第二个“now is..”注释中看到datetime.datetime.now()返回准确的localtime。此外,命令行中的date或time命令将精确返回到localtime。此外,time.mktime(time.localtime())和time.time()的结果之间的差异是gmNow是1411178199.0 timenow是1411178199.284297I添加了这一点,datetime.utcnow()的结果是一个错误:timeUTC=datetime.utcnow()AttributeError:'module'对象没有属性'utcnow'use
from datetime import datetime
dang,nope。日出时间是2014-09-20 12:53:17.000005日落时间是2014-09-20 00:54:27.000005现在是2014-09-20 02:01:28.962811它将“现在”切换到UTC时间,但仍然fails@Octoth0rpe:您还应该固定经度、纬度。我已经用完整的代码更新了答案示例Yes!!非常感谢。看见简单的事情。啊“以林换树”。我从来没有想过这一点,于是就去兰博寻找其他的datetime、date、timedate等套餐。再次感谢!
sunrise is at 2014-09-20 06:55:38.000005
sunset is going to be at  2014-09-19 19:16:38.000004
now is  2014-09-19 19:15:04.171486-07:00