質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

20512閲覧

Java初心者です。Javaで年齢計算を計算したいです。

ComSatooooshi

総合スコア15

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2015/03/08 03:43

Java初心者です。年齢計算を計算したいです。

「誕生日(例えば1986/06/01)」と「特定の日(例えば2015/02/01)」の二つの日付から年齢を求めたいです。この二つの日付は変動する可能性があり、うるう年も考慮しなければなりません。

なかなか上手く計算する事が出来ません。アドバイスお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

下記リンクの記事は、サンプルコードだけでなく考察も書かれていますので、ご一読されてはいかがでしょう。
年齢を計算する、java.util.Calendarとjava.time.LocalDateとで - torutkの日記

投稿2015/03/08 03:54

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

基本的には前の方と同じ様にjava.util.Calendarクラスを使います.

lang

1//数値はこの前の段階で適宜解析などで取得する 2Calendar target = Calendar.getInstance(); 3//今日の日付を取るならsetメソッドは不要,Calendarクラスで月は1小さい数で表す 4target.set(2015, 2-1, 1); 5Calendar birthday = Calendar.getInstance(); 6birthday.set(1986, 6-1, 1); //誕生日の年月日をセット

1.「誕生日」と「特定の日」の「年の差」を計算します
例の場合,2015-1986=29
2.「誕生日」の「年」を「特定の日」の「年」に設定した日付(例の場合2015/06/01)と
「特定の日」を比較して,後者がよりあとの日付か両者が同日なら1.がそのまま年齢に,
そうでないなら1.の答え-1が年齢になります.

lang

1birthday.set(Calendar.YEAR, 2015); //誕生日の年を対象の年にスライド 2if(target.get(Calendar.DAY_OF_YEAR) < birthday.get(Calendar.DAY_OF_YEAR)) 3 age -= 1; //求めた年齢を1引く

Calendar.DAY_OF_YEARは「その年の何日目か」を表すフィールド値です.
Calendar.getメソッドの引数にすると「1月1日」なら「1」が,
「12月31日」なら「365(平年)」か「366(閏年)」が返ります.

Calendarクラスが便利なのは,2.の操作の時に閏年をさほど意識する必要がないという点です.
例えば,誕生日が2000年(閏年)2月29日だった場合,2.の操作で2015年に変化させた時に
Calendarクラスはこれを2015年3月1日と認識します(非厳密性).

投稿2015/03/08 05:32

編集2015/03/08 15:27
swordone

総合スコア20649

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ネットで見つけたサンプルコードですが。
GregorianCalendar型からgetTimeした時間を差し引きして、
その日付を割り出してあげれば良いのかと思います。

lang

1/** 2 * 2つの日付の差を求めます。 3 * 日付文字列 strDate1 - strDate2 が何日かを返します。 4 * 5 * @param strDate1 日付文字列 yyyy/MM/dd 6 * @param strDate2 日付文字列 yyyy/MM/dd 7 * @return 2つの日付の差 8 * @throws ParseException 日付フォーマットが不正な場合 9 */ 10public static int differenceDays(String strDate1,String strDate2) 11 throws ParseException { 12 Date date1 = DateFormat.getDateInstance().parse(strDate1); 13 Date date2 = DateFormat.getDateInstance().parse(strDate2); 14 return differenceDays(date1,date2); 15} 16/** 17 * 2つの日付の差を求めます。 18 * java.util.Date 型の日付 date1 - date2 が何日かを返します。 19 * 20 * 計算方法は以下となります。 21 * 1.最初に2つの日付を long 値に変換します。 22 * ※この long 値は 1970 年 1 月 1 日 00:00:00 GMT からの 23 * 経過ミリ秒数となります。 24 * 2.次にその差を求めます。 25 * 3.上記の計算で出た数量を 1 日の時間で割ることで 26 * 日付の差を求めることができます。 27 * ※1 日 ( 24 時間) は、86,400,000 ミリ秒です。 28 * 29 * @param date1 日付 java.util.Date 30 * @param date2 日付 java.util.Date 31 * @return 2つの日付の差 32 */ 33public static int differenceDays(Date date1,Date date2) { 34 long datetime1 = date1.getTime(); 35 long datetime2 = date2.getTime(); 36 long one_date_time = 1000 * 60 * 60 * 24; 37 long diffDays = (datetime1 - datetime2) / one_date_time; 38 return (int)diffDays; 39} 40 41

投稿2015/03/08 03:50

h-yoshinaka

総合スコア118

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問