Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Date/Calendar

import java.util.*;
import java.text.SimpleDateFormat;

class Test{
    public static void main(String args[]){
        Date date = new Date();
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat df = new SimpleDateFormat("d");
        System.out.println(df.format(date));
        System.out.println(cal.get(Calendar.DATE));
    }
}

結果。
>java Test
3
3

質問。
日付を扱うならDateクラス。
時刻計算を扱うならCalendarクラス。
認識あってますか。

例えば、こういう時はDateクラスよ〜。
こういう時には、Calendarよ〜。
って例を出して頂けないでしょうか。

宜しくお願い致します。


4

回答

80027

閲覧

4件の回答

評価

0

回答内容 特定の時点を表すのがDateクラスよ〜。
日付や時刻を処理するのがCalendarよ〜。

って、わかりにくww

「特定の時点」と「日付や時刻」を切り分けてるんです。

例えば、ある時間から一日後というとき、
24時後という時間が重要な場面と、日付として一日後の同時刻というのが重要な場面があります。
「うるう」なんてのがあると、それぞれ表している時は違う事になっる場合があります。

であるからして、「ある時点」をあらわすものと「日付の解釈」を分離してあるのです。

複数作られるオブジェクトのオブジェクト変数として保持するとき、少し注意が必要
Calendarだと、特別な理由がない限りデータとして大きいので使用しない方がいいと思われます。
私ならgetTimeInMillis()等で得られるlong値で保持します。 

評価

0

Dateは今後非推奨になるかもね。
そう簡単になくせるとも思えないが。

Dateは1970/1/1 0:0:0からの時間を画一的に扱うクラス
Calendarは地域による違いやそれ以前の時間も含めて統合的に扱う抽象クラス

内部的な基準値は同じだが、その値をどう扱うかをサブクラスに任せているところが違う。
Dateにもsetはできるのだから、自前で計算すれば増減できないことはない。
しかし増減は付加機能で、根本的な存在理由ではない。

評価

0

Dateは今一時の時間の情報を格納するにはぴったりね。
Calendarはその日付に対していろいろ演算ができるわ。

評価

0

ご回答ありがとうございます。

大変勉強になりました。
参考にさせて頂きます。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。