2014/03 時間操作のライブラリをpure JavaでつくりましたAndroid でも使えますJava(Android)時間操作ライブラリ
Java で日付, 時間を扱う場合によく出てくるのは
Date ( java.util.Date ) 型 class
Calendar 型 interface
ではないでしょうか。Calendar 型 interface
SQL系を合わせると,
Date ( java.sql.Date )
TimeStamp
でしょうか。(次回以降に回します)TimeStamp
いろいろな関数の引数そのほかもろもろで利用されるのは, Date型かと思います。
しかし, Date 型の操作には問題があります。
・getYear() , getMonth() などは, deprecated (非推奨) になっていて, Date 型のインスタンスから
・欲しい情報が得られない。
日付や時間の計算のメソッドがない。
というわけで, Date 型でつねにデータを持つことはあまり得策ではないことに気づきます。
そこで, 計算の得意な Calendar interface にまかせます。
次は例です。
ex) 現在時刻の取得
Date now = new Date();
Calendar cal = Calendar.getInstance();
上の2つは, 同じ現在の日付, 時刻をとりますがこれを表示したいのですが.....
Date 型は, 身動きできませんが
System.out.println ( "Year" + cal.get(Calendar.YEAR) + " Month" + cal.get(Calendar.MONTH));
などといけるわけです(表示には, SimpleDateFormatを使いましょう)
でも, 何かしらの関数でDate 型が帰ってきたり, Date型を引数に持つ場合はどうすんねん。
Date 型, Calendar 型は, 相互変換が可能です。
1) Date → Calendar
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAYOFMONTH, -3);
cal.setTime(date); // これで, date の日付時刻が calに入る
2) Calendar → Date
cal.getTime();
というように, 相互変換可能なので, できるだけ Calendar でキープしておいた方が
便利です。
Calendar系のクラスを利用して計算を行います
ex) 計算など
Calendar cal = Calendar.getInstance(); // 現在
cal.add ( Calendar.YEAR, 1); // 1年プラス
cal.add ( Calendar.MONTH, -1); // 1か月マイナス
cal.set(Calendar.MINUTE, 5); // 5分をセット
このように, add や, set で計算をしたりできます。
その後, Date 型に変換したりすればよいでしょう。
次回は, 役に立ちそうなメソッドについて
0 件のコメント:
コメントを投稿