使用Java从MySQL DATE字段打印日期和时间

Print using Java a date and time from a MySql DATETIME field

我在打印从mysql db的datetime字段中获取的日期时遇到问题。我正在尝试打印包含以下日期时间信息的字段:2013-06-23 17:29:40

格式为年月日时:分:秒。

从数据库结果(cal.toString())中获取日期:Java.U.FieldScRealDeal[Trime],AualFieldStSt= true,Apple FieldStase= Tral. ZONEFION[ID="欧洲/巴黎",偏移=3600000,DSTealSt==3600000,UsDayAuthLe=真,过渡=java. UTIL.SimuleMeTeal[ID] =欧洲/巴黎,偏移=3600000,DSSTARTIFY=3600000,USEDAYLAME=真,StistyValue= 0,StistMood=2,SARDMONth=2,startday=-1,startday of week=1,starttime=3600000,starttimemode=2,endmode=2,end月=9,endday=-1,endday of周=1,endtime=3600000,endtimemode=2]],第一天of周=2,最短天in第一周=4,时代=1,年=2013,月=5,年=25,月=3,月=3,月=23,年=174,月=1,月=1,月=1,月=1,年=1,年=1,年=2013,月=5,月=5,周=25,周=25,月=25,月=3,月=3,月=23日,月=23日,月=23日,日,年=174,年_in_month=4,am_pm=1,hour=5,hour_day=17,minute=29,秒=40,毫秒=0,区域偏移=3600000,DST偏移=3600000]

我使用integer.toString将int属性转换为字符串。不过,我在印刷这一年得到了:一打印月份:三打印日期:五打印时间:十一打印分钟:十二打印秒数:十三

如果我这样做:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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格式化字符串。例如,

1
2
3
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

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

这就是为什么你选错了一年。

如果您应该获得年、月、日期、小时、分钟、秒的每个值,可以这样做:

1
2
3
4
5
6
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));