0

MySQL DB の DATETIME フィールドから取得した日付を印刷する際に問題があります。この DATETIME 情報を含むフィールドを印刷しようとしています: 2013-06-23 17:29:40

形式は、年-月-日 時間:分:秒です。

DB の結果 (cal.toString()) から取得した日付のプライティング: java.util.GregorianCalendar[time=1372001380000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id ="ヨーロッパ/パリ",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=ヨーロッパ/パリ,offset=3600000,dstSavings=3600000,useDaylight=true,startYear =0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode =2]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2013,MONTH=5,WEEK_OF_YEAR=25,WEEK_OF_MONTH=3,DAY_OF_MONTH=23,DAY_OF_YEAR=174,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=4,AM_PM =1,HOUR=5,HOUR_OF_DAY=17,MINUTE=29,SECOND=40,MILLISECOND=0,ZONE_OFFSET=3600000,DST_OFFSET=3600000]

Integer.toString を使用して int 属性を String に変換します。ただし、年を印刷すると次のようになります: 1 月を印刷する: 3 日 を印刷する: 5 時間を印刷する: 11 分を印刷する: 12 秒を印刷する: 13

私がこれを行う場合:

String month = Integer.toString(cal.get(Calendar.MONTH) + 1);
if (month.length() == 1)
  month = "0" + month;
String day = Integer.toString(cal.get(Calendar.DAY_OF_MONTH));
if (day.length() == 1)
  day = "0" + day;
String hour = Integer.toString(cal.get(Calendar.HOUR_OF_DAY));
if (hour.length() == 1)
  hour = "0" + hour;
String minute = Integer.toString(cal.get(Calendar.MINUTE));
if (minute.length() == 1)
  minute = "0" + minute;
String second = Integer.toString(cal.get(Calendar.SECOND));
if (second.length() == 1)
  second = "0" + second;
String date= cal.YEAR + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;

日付文字列を印刷すると、これが得られます: 1-06-23 17:29:40

何が起こっているのか、正しい日付を印刷するにはどうすればよいか知っている人はいますか? 前もって感謝します。

4

1 に答える 1

1

インスタンスを取得したら、そこからインスタンスを取得し、 でフォーマットされた文字列をCalendar取得できます。例えば、DateSimpleDateFormat

Date d = cal.getTime();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String s = df.format(d); // formatted date

間違った文字列を取得した理由は... cal.YEAR はCalendarクラスの静的定数であり、その値は として定義されてい1ます。

String date= cal.YEAR + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
             ^^^^^^^^

だから年を間違えた。

年、月、日、時、分、秒の各値を取得する必要がある場合は、次のように実行できます。

String year = String.format("%d", cal.get(Calendar.YEAR));
String month = String.format("%02d", cal.get(Calendar.MONTH)+1);
String date = String.format("%02d", cal.get(Calendar.DATE));
String hour = String.format("%02d", cal.get(Calendar.HOUR));
String minute = String.format("%02d", cal.get(Calendar.MINUTE));
String second = String.format("%02d", cal.get(Calendar.SECOND));
于 2013-05-31T10:34:29.417 に答える