日時を取得してみよう(Java)
こんにちは、ゆっきーです。
前回、前々回と続いた採集関係の記事とは変わり、今回はまたまた技術の話になります。
日時を取得してみよう。
iPhoneのアプリ(ゲームでも何でもいいですが)なんかを使っているときに、よく見るとアプリ内で現在時刻がや日時が表示されていたりするのを見かけたりすると思います。
例を挙げるとすると、このアプリはWindyという時間/日にちごとの風向き・気温・天気などを確認できるアプリです
これひとつで海況を瞬時に確認できるので、我々採集家にはもはや必須と言っていいアプリの一つですが、時間ごとの予報を出すためにこのアプリ内でももちろん日時の取得がプログラムで行われています。
Javaでは、とあるクラスを用いて日時を取得することができます。3つあるのでひとつずつ勉強してみました。
日時の取得クラス① Dateクラス
Dateクラスは、初期のJava(JDK1.0)から使われているクラスです。
Dateクラスのインスタンスで日時を取得し、出力します。
「日曜日 8月16日 23時0分9秒 2020年」と、現在の日時が取得されました。
さらにここからDateFormatクラスを用いると、Dateクラス内から指定した情報を取り出すことができます。
DateFormatクラスは前回時計アプリの開発の記事で触れました。今回も使ってみます。
例えば日付であればDateFormat.getDateInstance()、時間であればDateFormat.getTimeInstanceと、取得したい情報を指定し出力します。こんな感じでnew演算子以外でインスタンスを作るクラスがあります。
また、DateFormatクラスを使うのであればjava.textパッケージをインポートする必要があります。
こんな感じで個別に取得した情報を取り出せます。
日時の取得クラス② Calendarクラス
dateクラスですが、JDK1.1以降ではこれらに変わってCalendarクラスと呼ばれるクラスが導入されました。Dateクラスに対して細かに日時操作を行うことができるので、現在ではDateクラスはあまり使われないそうです。
Calenderクラスを使ってみましょう。
Calenderクラスをそのまま使うとやたらめったら長いデータが出力されて何が何だかわからなくなってしまうので、getメソッドを用いて年月日、時分秒を取得してみます。
なかなか書くのが大変だった。
こんな感じでgetメソッドを用いて、細かく情報を指定し出力します。
かなり細分化して日時が取得できました。
日時の取得③ java.timeパッケージ
細かい日時操作がCalendarクラスで行えることはわかりましたが、いかんせんやっぱりコードが長くて書くのがダルいなかなか大変ですね………。
そこでJDK1.8から登場したjava.timeパッケージに属するクラスで、さらに効率的に日時の処理を行うことができます。
たとえば時、分、秒を取得する場合、ZonedDateTimeやLocalTimeクラスなどを使いますが、これのすごいところはナノ秒というとても細かい単位で時間が取得できることです。ナノ秒って10億分の1ですよ。便利すぎますね。
かなり短いコードで時間を取得できました。
もちろんメソッドを変えることで年月日、曜日も取得することができます。
というわけで、さまざまなクラスやメソッドを用いて、現在日時を取得する方法について勉強をしてみました。将来アプリ開発をするうえで、現在時刻を取得するという考え方は他の言語でも役に立つかと思います。
それでは。