本稿では 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);
}
}



