熊猫:如何使用时间戳知道它的白天或黑夜?

时间:2017-04-08 19:31:20

标签: python pandas data-analysis python-datetime

我正在尝试根据时间戳列表确定它是白天还是晚上。如果我只检查上午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

4 个答案:

答案 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可以让穆斯林无所适从。确切地包括日落和日出时间。但是,您仍然需要位置坐标才能获取数据。目前是免费的。