我正在尝试根据时间戳列表确定它是白天还是晚上。如果我只检查上午7:00到下午6:00之间的小时将其分类为" day",否则" night&#34 ;?就像我在下面的代码中所做的那样。我不确定这一点,因为有时甚至是在下午6点之后的那一天,那么使用python来区分白天或黑夜的准确方法是什么?
sample data: (timezone= utc/zulutime)
timestamps = ['2015-03-25 21:15:00', '2015-06-27 18:24:00', '2015-06-27 18:22:00', '2015-06-27 18:21:00', '2015-07-07 07:53:00']
Code:
for timestamp in timestamps:
time = datetime.datetime.strptime(timestamp, "%Y-%m-%d %H:%M:%S")
hr, mi = (time.hour, time.minute)
if hr>=7 and hr<18: print ("daylight")
else: print ("evening or night")
sample output:
evening or night
evening or night
evening or night
evening or night
daylight
答案 0 :(得分:11)
您可以使用pyephem
执行此任务。这是一个
用于执行高精度天文计算的Python包。
您可以设置所需的位置并获得太阳高度。夜晚有多种定义,具体取决于民用(-6°),航海(-12°)或天文(-18°)用途。只需选择一个门槛:如果太阳低于,那就是夜晚!
#encoding: utf8
import ephem
import math
import datetime
sun = ephem.Sun()
observer = ephem.Observer()
# ↓ Define your coordinates here ↓
observer.lat, observer.lon, observer.elevation = '48.730302', '9.149483', 400
# ↓ Set the time (UTC) here ↓
observer.date = datetime.datetime.utcnow()
sun.compute(observer)
current_sun_alt = sun.alt
print(current_sun_alt*180/math.pi)
# -16.8798870431°
答案 1 :(得分:0)
不幸的是,python&#39; timestamp
无法确定它是白天还是黑夜。这也是因为它取决于您所在的位置以及您如何定义白天和黑夜。我担心你必须得到辅助数据。
答案 2 :(得分:0)
您需要知道纬度和经度。事实上,如果一个地方在一个深谷中,那么日出会更晚,日落也会更早。如果您需要每天多次获取此服务,或者只是抓取https://www.timeanddate.com/worldclock/uk/london上的页面,您可以支付此服务费用。
答案 3 :(得分:0)
作为一种解决方法,有一个免费的api可以让穆斯林无所适从。确切地包括日落和日出时间。但是,您仍然需要位置坐标才能获取数据。目前是免费的。