• 締切済み

JAVA

JAVAの日時を表示するものを作っているんですが 勉強中の初心者です。JAVAの日時を表示するものを作っているんですがどうにも判りません。 ネットで見ても同じような例が無いので、、作られたものを見てここがこれ使って、 こうなるのかというのを見たいのでよろしくお願いします。添付画像にイメージを書いてみました。

みんなの回答

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.4

こんにちは。 例に挙げたものの応用で作れませんか? 勉強中ならなおさら試してみてください。 現状のBClassのメソッドはCalendarクラスを受け取ってフォーマット変換をしてString型で返しています。 質問者様のようなパラメータを渡したいのであればBClassに public String getPtn4 ( int year, int month, ・・・省略 ) { return 処理後の文字列 } としてあげればよいです。 例に挙げたメソッドのCalendarクラスを受け取る部分をそれぞれ受け取るようにすれば良いです。 まずは自分でやってみてください。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.3

こんにちは。 サンプルクラスを作ってみました。 一応、簡単なコメントは入れておいたのでそれでもわからないことがあったら補足下さい。 ==== AClass.java package q7501142; import java.util.Calendar; public class AClass { public static void main ( String[] args ) { // Bクラスのインスタンスを生成 BClass b = new BClass(); // 現在時間をカレンダークラスで取得 Calendar calendar = Calendar.getInstance(); // BクラスのgetPtn1を現在時間で呼び出す System.out.println ( b.getPtn1(calendar) ); // BクラスのgetPtn2を現在時間で呼び出す System.out.println ( b.getPtn2(calendar) ); // BクラスのgetPtn3を現在時間で呼び出す System.out.println ( b.getPtn3(calendar) ); // BクラスのgetDateを現在時間と表示フォーマットで呼び出す System.out.println ( b.getDate(calendar,"西暦yyyy年MM月dd日のHH時mm分です。") ); } } ==== BClass.java package q7501142; import java.text.SimpleDateFormat; import java.util.Calendar; public class BClass { public BClass() { } /** * パターン1の日付文字列を返します。 * * @param _calTarget 表示する時間 * @return パターン1の日付文字列 */ public String getPtn1 ( final Calendar _calTarget ) { StringBuilder sb = new StringBuilder(); sb.append ( this.getDate(_calTarget,"yyyy年MM月dd日、HH時mm分" ) ); sb.append ( "(" ); sb.append ( this.getWeekDay(_calTarget.get(Calendar.WEEK_OF_MONTH)) ); sb.append ( ")" ); return sb.toString(); } /** * パターン2の日付文字列を返します。 * * @param _calTarget 表示する時間 * @return パターン2の日付文字列 */ public String getPtn2 ( final Calendar _calTarget ) { return this.getDate ( _calTarget,"yyyy/MM/dd HH:mm" ); } /** * パターン3の日付文字列を返します。 * * @param _calTarget 表示する時間 * @return パターン3の日付文字列 */ public String getPtn3 ( final Calendar _calTarget ) { return this.getDate ( _calTarget,"yyyy:MM:dd HH:mm" ); } /** * 指定されたパターンで日付文字列を返します。 * * @param _calTarget 表示する時間 * @param _strFormat 表示するフォーマット * @return フォーマットされた日付文字列 */ public String getDate ( final Calendar _calTarget, final String _strFormat ) { SimpleDateFormat sdf = new SimpleDateFormat ( _strFormat ); return sdf.format ( _calTarget.getTime() ); } /** * 曜日文字列を返します。 * * @param _intWeekDay 曜日値 * @return 曜日文字列 */ private String getWeekDay ( final int _intWeekDay ) { switch ( _intWeekDay ) { case Calendar.SUNDAY: return "日"; case Calendar.MONDAY: return "月"; case Calendar.TUESDAY: return "火"; case Calendar.WEDNESDAY: return "水"; case Calendar.THURSDAY: return "木"; case Calendar.FRIDAY: return "金"; case Calendar.SATURDAY: return "土"; default: return ""; } } }

bodhi888
質問者

補足

main から現在時刻のパラメーターを取ってきて、別クラスのメソッドで処理してひとつにまとめて、またメインに引数で返して、表示したいのです。 おそらくこのようなものをメインに作って year = calendar.get(Calendar.YEAR); month = calendar.get(Calendar.MONTH); date = calendar.get(Calendar.DATE); hour = calendar.get(Calendar.HOUR); minute = calendar.get(Calendar.MINUTE); second = calendar.get(Calendar.SECOND); day_week = calendar.get(Calendar.DAY_OF_WEEK) - 1; もうひとつのクラスのメソッド内で処理して返す。 どうにもこれが作れないのです、、、 よろしくお願いします。 

  • hideishi
  • ベストアンサー率55% (5/9)
回答No.2

質問の意図は、日時文字列を編集したいということでしょうか? 日時文字列の編集には、SimpleDateFormatクラスがよく用いられます。 サンプルコードは、以下のとおり。 public class TMain3 { //パターン定義 private static final String DATE_PATTERN = "yyyy年MM月dd日 HH時mm分"; String exec(){ Calendar cal = Calendar.getInstance(); //インスタンス化 //曜日文字列取得 String wd = getWeekDay(cal); Date curdate = cal.getTime(); SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN); String txt = sdf.format(curdate) + "("+ wd + ")"; return txt; } /** * 曜日文字列取得 * @param cal * @return */ private String getWeekDay(Calendar cal){ String wd = ""; switch(cal.DAY_OF_WEEK){ case Calendar.SUNDAY: wd = "日"; break; case Calendar.MONDAY: wd = "月"; break; case Calendar.TUESDAY: wd = "月"; break; case Calendar.WEDNESDAY: wd = "月"; break; case Calendar.THURSDAY: wd = "木"; break; case Calendar.FRIDAY: wd = "金"; break; case Calendar.SATURDAY: wd = "土"; break; } return wd ; } /** * @param args */ public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ TMain3 app = new TMain3(); System.out.println("現在日時="+ app.exec()); } }

bodhi888
質問者

補足

例文を見て少し判ってきた様な気がします。初歩的な質問で申し訳ないですが、app.execの意味がどうもわかりません。EXECで表示になってるわけですよね? 各表示スタイルに当てはめるには上のクラスと同じ形式で必要分書き足せばよいのでしょうか?よろしくお願いします。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 わからないというのはどのようなことがわからないのでしょうか。 例えば、BClassにメソッドを作るとしても3パターンを一気に生成して文字列を返すメソッドで良いのか、それぞれメソッドが必要なのか等々あります。 またはインスタンス生成時に日時を指定して、そこからそれぞれの表示形式で返すものなのか、それぞれのメソッドに日時を渡すのか。 補足お願いいたします。

bodhi888
質問者

補足

それぞれの表示スタイルごとにメソッドで分けて、メインからパラメーターを受け取って、現在時刻と各表示スタイルに当てはめてからメインに返して表示したいです。よろしくお願いします。

関連するQ&A