使用Java从MySql DATETIME字段打印日期和时间



我有一个问题打印日期我从DATETIME字段从我的MySQL数据库。我试图打印一个字段与此DATETIME信息:2013-06-23 17:29:40

格式为YEAR-MONTH-DAY HOURS:MINUTES:SECONDS。

打印从DB结果(cal.toString())获得的日期:java.util.GregorianCalendar[时间= 1372001380000,areFieldsSet = true, areAllFieldsSet = true,宽大= true,区= sun.util.calendar.ZoneInfo [id ="欧洲/巴黎",抵消= 3600000,dstSavings = 3600000, useDaylight = true,转换= 184,lastRule = java.util.SimpleTimeZone [id =欧洲/巴黎,抵消= 3600000,dstSavings = 3600000, useDaylight = true, startYear = 0, startMode = 2, startMonth = 2, startDay = 1, startDayOfWeek = 1,开始时间= 3600000,startTimeMode = 2, endMode = 2, endMonth = 9, endDay = 1, endDayOfWeek = 1, endTime = 3600000, endTimeMode = 2]],放在第一位DayOfWeek = 2, minimalDaysInFirstWeek = 4,时代= 1年= 2013,月= 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小时= 5,HOUR_OF_DAY = 17分钟= 29,第二= 40毫秒= 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

有谁知道发生了什么事,我怎么才能打印正确的日期?

一旦您获得了Calendar实例,您就可以从中获得Date实例,并使用SimpleDateFormat格式化字符串。例如,

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));

最新更新