詳細は次のリンクで調べましょう。
今日の日付の情報を得るのにjava.util.Calendarクラスを利用します。
Calendar d = Calendar.getInstance();//現在の時間を取得
そして、d.get(フィールド定数)で各種情報が得られます。
フィールド定数は、Calendar.YEAR、Calendar.MONTH、Calendar.DATE などがります。
またd.getTimeInMillis()でエポックタイム(epoch time)が得られます。d.setTimeInMillis()で設定も可能です。
エポックタイムは1970年1月1日 00:00:00.000 GMT (グレゴリオ暦) からの時間を意味します。
この単位はミリ秒のlong値で、一回だけ乱数の変わり使うことができます。
1日の24時間をミリ単位のエポックタイムにすると1000×60秒60分×24時間=886400000秒になります。
以下で、各種使い方の例を示します。
import java.io.*;//InputStreamReader,BufferedReader利用のため
import java.util.*; //Calendarクラス利用のため
public class Test {
public static void main(String argv[]) throws Exception{
InputStreamReader is = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(is);
Calendar rightNow = Calendar.getInstance();//現在の時間を取得
int rightYear = rightNow.get(Calendar.YEAR);
int rightMonth = rightNow.get(Calendar.MONTH) + 1;// JANUARYが0なので調整
int rightDate = rightNow.get(Calendar.DATE);
System.out.print("誕生の西暦年>");
int birthYear = Integer.parseInt(br.readLine());
System.out.print("誕生の月(1-12)>");
int birthMonth = Integer.parseInt(br.readLine());
System.out.print("誕生の日(1-31)>");
int birthDate = Integer.parseInt(br.readLine());
int nen = rightYear - birthYear;
if(rightMonth < birthMonth || rightMonth == birthMonth && rightDate < birthDate ){
nen--;//この条件(月日)では、まだ生まれていない。
}
System.out.println("今日は、" + rightYear + "年" + rightMonth + "月" + rightDate + "日で");
System.out.print( " " + birthYear + "年" + birthMonth + "月" + birthDate + "日生まれの人の");
System.out.println("年齢は=" + nen + "才です");
}
}
実行例を以下に示します
誕生の西暦年>1980
誕生の月(1-12)>5
誕生の日(1-31)>18
今日は、2005年6月17日で
1980年5月18日生まれの人の年齢は=25才です
import java.io.*;//InputStreamReader,BufferedReader利用のため
import java.util.*; //Calendarクラス利用のため
public class Test
{
public static void main(String argv[]) throws Exception
{
InputStreamReader is = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(is);
System.out.println("曜日定数のデータを列挙");
System.out.println("日:" + Calendar.SUNDAY);
System.out.println("月:" + Calendar.MONDAY);
System.out.println("火:" + Calendar.TUESDAY);
System.out.println("水:" + Calendar.WEDNESDAY);
System.out.println("木:" + Calendar.THURSDAY);
System.out.println("金:" + Calendar.FRIDAY);
System.out.println("土:" + Calendar.SATURDAY);
System.out.println();
String[] weekStr = { "NON", "日", "月", "火", "水", "木", "金", "土" };
System.out.print(" 西暦年>");
int yy = Integer.parseInt(br.readLine());
System.out.print("月(1-12)>");
int mm = Integer.parseInt(br.readLine());
Calendar calendar1 = Calendar.getInstance();
calendar1.set(yy, mm - 1, 1);//入力年月の一日のデータを設定
int iweek = calendar1.get(Calendar.DAY_OF_WEEK);
System.out.println(yy+"年"+mm+"月"+"1日の曜日=" + weekStr[iweek]);
System.out.println("この月の日数=" + calendar1.getActualMaximum(Calendar.DATE));
}
}
実行例を以下に示します
曜日定数のデータを列挙 日:1 月:2 火:3 水:4 木:5 金:6 土:7 西暦年>2009 月(1-12)>2 2009年2月1日の曜日=日 この月の日数=28
CalendarオブジェクトのgetTime()メソッドで、Dataのオブジェクトが戻り値で得ることができます。
(setTimeメソッドで、Dataオブジェクトの設定可能です。)
Dataクラスは、そのコンストラクタで現在時間が記憶されるDataオブジェクトを生成できます。
そしてgetTimeメソッドで、1970 年 1 月 1 日 00:00:00 GMT からのミリ秒数をlongで返します。
この時間は、エポックタイム(epoch time)と呼ばれますが、この時間でDataオブジェクトの
内部記憶情報を変更する場合は、setTimeメソッドを使います。
また、Dateオブジェクトを比較する after(Date when)、before(Date when)、 boolean equals(Object obj)
が用意されています。
なお、Dateオブジェクトから表示に使うStringを取得する場合、SimpleDateFormatクラスを使います。
SimpleDateFormatは、コンストラクタで次のフォーマットを指定して生成し、
そのオブジェクトのformatメソッド引数でDateオブジェクトし、表示用の文字列を取得します。
| 文字 | 説明 |
|---|---|
| yyyy | 年 1996 |
| yy | 年 96 |
| G | 紀元 AD |
| MM | 月 July, Jul, 07 |
| w | 年における週 27 |
| W | 月における週 2 |
| D | 年における日 189 |
| d | 月における日 10 |
| F | 月における曜日 2 |
| E | 曜日 Tuesday, Tue |
| a | 午前/午後 PM |
| H | 一日における時(0?23) 0 |
| k | 一日における時(1?24) 24 |
| K | 午前/午後の時(0?11) 0 |
| h | 午前/午後の時(1?12) 12 |
| m | 分 30 |
| s | 秒 55 |
| S | ミリ秒 978 |
| z | タイムゾーン Pacific Standard Time, PST, GMT-08:00 |
| Z | タイムゾーン -0800 |
Date d = new Date();//現在の時間を取得
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd a hh:mm:ss", Locale.US);
String s=sdf.format(d);
System.out.println(s);
sdf = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
System.out.println(sdf.format(d));
2012/07/07 PM 10:05:22 2012年07月07日 22時05分22秒