0

日付フォーマッタを使用して文字列型の日付をフォーマットすることは可能ですか? 日付と時刻を文字列として Event クラスに格納したいので、MYSQL データベースからロードされた文字列 (DATE 型と TIME 型を使用) を Date 型に戻す必要がなくなり、新しい Event に格納できるようになります。オブジェクト。YYYY-MM-DDMySQL は DATE の形式と TIMEの形式のみを受け入れますHH:MM:SSが、プログラムで出力するときにこれらを異なる形式にしたいと考えています。

このコードを実行すると、Cannot format given Object as a Date at java.text.DateFormat.format(Unknown Source)エラーが発生します。parse() を使用しようとすると、日付のみを受け入れるため、コンパイルされません。

メインクラス

public Main() {
   ArrayList<Event> events = new ArrayList<Event>();
   private SimpleDateFormat timeFormat = new SimpleDateFormat("HH:MM:SS");
   private SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-DD");

   //Stores current time and date
   Date date;
   Date time;
   String d = "";
   String t = "";           

   d= dateFormat.parse(date);
   t= timeFormat.parse(time);

   events.add(d, t);

   //Print out newly formatted date and time when loaded from mysql
   System.out.println(events.get(0).printDate());
   System.out.println(events.get(0).printTime());
}

イベントクラス

public class Event {    
   private String date;
   private String time;

   public Event(String d, String t) {
      date = d;
      time = t;
   }

   public String printDate() {
       SimpleDateFormat format = new SimpleDateFormat("DD/MM/YYYY");
       String newDate = format.format(date);
       return newDate;
   }

   public String printTime() {
       SimpleDateFormat format = new SimpleDateFormat("HH:mm");
       String newTime = format.format(time);
       return newTime;
   }
}
4

4 に答える 4

1

String日付はオブジェクトであり、オブジェクトSimpleDateFormatが必要なため、日付をフォーマットできませんDate。それらを格納する別の方法を検討する必要があります ( または としてDate) Calendar。下記参照:

public class Event
{    
   private Date date;
   private Date time;

   public Event(String d, String t)
   {
      String[] details = d.split("\\-");

      Calendar c = Calendar.getInstance();
      c.set(Integer.parseInt(details[0]), Integer.parseInt(details[1]), Integer.parseInt(details[2]));

      date = c.getTime();

      details = t.split(":");
      c.set(Integer.parseInt(details[0]), Integer.parseInt(details[1]), Integer.parseInt(details[2]));

      time = c.getTime();
   }

   public String printDate()
   {
          SimpleDateFormat format = new SimpleDateFormat("dd/MM/YYYY");
          String newDate = format.format(date);
          return newDate;
   }
   // rest of you class can stay the way it is
} 
于 2013-05-31T01:43:23.547 に答える
0

正しい書式設定コードについては、 javadocを確認してください。これを試して:

SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
于 2013-05-31T01:29:12.303 に答える