2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Python】APIから日出、日没、薄明の時間を取得してみた

Last updated at Posted at 2021-10-26

初めに

ダッシュボード作成のために、各種情報をAPIにて取得する
Sunset and sunrise times APIを使用すると取得できることが判明
⇒Pythonを用い、HP等で表示させる用途を想定
PHPバージョン

環境

  • Windows10
  • Python 3.8.12

パラメータ

lat (float):必須、取得したい場所の緯度、
lng (float): 必須、取得したい場所の経度
date (string):オプション、YYYY-MM-DDフォーマットにて入力/相対・絶対日時の指定も可能。入力しない場合は現在の時刻を取得する。
callback (string):オプション,Callback function name for JSONP response.
formatted (integer): オプション、0 か 1 (1 がデフォルト). 0の場合はISO 8601にて出力される。

本コードではsunset_url.formatにてパラメータをセットしてください。

コード

sunset_time_api.php
# -*- coding:utf-8 -*-
#各種libraryのインポート
import requests
import json
import datetime
from datetime import datetime, timezone, timedelta

# sunset_apiより天気を取得する
sunset_url = "https://api.sunrise-sunset.org/json?lat={lat}&lng={lon}&date={date}&formatted=0"
#各種パラメータをセット
sunset_url = sunset_url.format(lat="35.00000", lon="135.000000", date="today")
sunset_json = requests.get(sunset_url).json()

# ISO8601フォーマット => Datetime_awere(timezoneあり)
utc_sunrise = datetime.fromisoformat(sunset_json["results"]["sunrise"])
utc_sunset = datetime.fromisoformat(sunset_json["results"]["sunset"])
utc_civil_twilight_end = datetime.fromisoformat(
    sunset_json["results"]["civil_twilight_end"])
utc_nautical_twilight_end = datetime.fromisoformat(
    sunset_json["results"]["nautical_twilight_end"])
utc_astronomical_twilight_end = datetime.fromisoformat(
    (sunset_json["results"]["astronomical_twilight_end"]))

# timezone変更(UTC => JST)、表示フォーマットの変更
# 時刻フォーマット例;'%Y年%-m月%-d日 %-H時%-M分%-S秒'
JST = timezone(timedelta(hours=+9), "JST")
sunrise = utc_sunrise.astimezone(JST).strftime('%m/%d %H:%M')
sunset = utc_sunset.astimezone(JST).strftime('%m/%d %H:%M')
civil_twilight_end = utc_civil_twilight_end.astimezone(JST).strftime('%m/%d %H:%M')
nautical_twilight_end = utc_nautical_twilight_end.astimezone(JST).strftime('%m/%d %H:%M')
astronomical_twilight_end = utc_astronomical_twilight_end.astimezone(JST).strftime('%m/%d %H:%M')


print("日の出 : " + sunrise)
print("日の入り:"+sunset)
print("市民薄明の終わり:" + civil_twilight_end)
print("航海薄明の終わり:" + nautical_twilight_end)
print("天文薄明の終わり:" + astronomical_twilight_end)

参考サイト

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?