本稿では Java で日出・日没の時刻を計算してくれるOSSライブラリ「Sunrise/SunsetLib」について解説します。
Sunrise/SunsetLib とは
Sunrise/SunsetLib は、GitHub 上で Mike Reedell 氏によって開発されているオープンソースライブラリです。 緯度・経度を元に、日出・日没時刻を計算するためのライブラリです。 プロジェクトページはこちらです。 またRuby版も開発されています。
導入
Sunrise/SunsetLib は、リリースページから jar ファイルをダウンロードするか、Maven や Gradle を利用している場合は、次のように依存関係を記述することで利用できます。
Apache Maven
<dependency> <groupId>com.luckycatlabs</groupId> <artifactId>SunriseSunsetCalculator</artifactId> <version>1.2</version> </dependency>
Gradle
repositories { mavenCentral() } dependencies { compile 'com.luckycatlabs:SunriseSunsetCalculator:1.2' }
日出・日没時刻を取得する
それでは、日出・日没時刻を取得してみましょう。 取得したい座標(緯度・経度)・タイムゾーン・日付を準備し、SunriseSunsetCalculatorクラスを利用して日出・日没時刻を文字列で取得します。 次の例では、東京駅の日出・日没時刻を日本時間で取得しています。
import java.util.Calendar; import java.util.TimeZone; import com.luckycatlabs.sunrisesunset.SunriseSunsetCalculator; import com.luckycatlabs.sunrisesunset.dto.Location; public class SunriseSunsetMain { public static void main(String args[]) { // 計算する場所・タイムゾーン・日付を準備する Location location = new Location(35.681298d,139.7662469d); TimeZone timeZone = TimeZone.getTimeZone("Asia/Tokyo"); Calendar calendar = Calendar.getInstance(timeZone); // 日出・日没時刻を取得する SunriseSunsetCalculator calculator = new SunriseSunsetCalculator(location, timeZone); String sunriseTime = calculator.getOfficialSunriseForDate(calendar); String sunsetTime = calculator.getOfficialSunsetForDate(calendar); System.out.println(sunriseTime); System.out.println(sunsetTime); } }