一、输出任意格式的日期
//连接数据库MYSQL
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConn();
//创建一条语句
Statement stmt = conn.createStatement();
// 执行一条语句,并将数据库表(artcile)中的表示日期的字段pdate取出来
ResultSet rs = stmt.createQuery("select pdate from article");
在Java2SE中,有两个Date,一个是java.util.Date, 另一个是java.sql.Date, java.sql.Date是java.util.Date的子类。
对java.util.Date进行操作:
Date date = rs.getDate("pdate"); //将pdate保存为日期型
SimpleDateFormat fdate = new SimpleDateFormat("yyyy年MM月dd日");
System.out.println(fdate.format(date)); //打印出你想得到的日期格式
注意: 如果
思维切入点:因为只得到年份,所以很希望有一种方法,例如:getyear() or getMonth() or getDate()方法,但是我们一查API文档就会发现:你所希望的这些方法都已经废弃了。
这些方法都不能用了,这时的你会不会一脸苦恼呢? 不要苦恼,你若在细心一点的话就会柳暗花明了:replaced by Calendar.get(Calendar.MONTH)。说明你希望了的哪些方法虽然不能用了,但是API还是提供了能够代替他的类Calendar,类Calendar在java.util包中,通过读API文档,Calendar是一个抽象类,创建一个Calendar类对想就不能使用new操作符了,在API中提供了创建一个Calendar类对象的例子:
Calendar c = Calendar.getInstance();
这时你如果直接执行:c.get(Calendar.MONTH); 得出的结果就是当前系统时间的月份。
你如何将数据库表中的日期设置到Calendar类中,只是就需要我们继续认真读API文档了,你会发现setTime(Date d)方法。
所以:你必须执行c.setTime(date); 将表中的日期设置到Calendar中。
代码示例:
Date date = rs.getDate("pdate");
Calendar c = Calendar.getInstance();
c.setTime(date);
System.out.println(c.get(Calendar.MONTH); // 输出表中日期中的相应月份 。年份和几号同理。
二、只输出pdate中的年份(或月份或几号)
SimpleDateFormat fdate = new SimpleDateFormat("HH:mm:ss");
System.out.println(fdate.format(date));
则输出的结果:
00:00:00
00:00:00
00:00:00 //假设article表就只有3条记录,所以就输出3条记录
思考:为什么会出现这个结果呢:
这是因为从数据库中拿出的pdate把它保存为日期型,所以在pdate里没有时间型的记录。
三、将字符串转换成日期型
Sting str = "2010-1-2 08:08:08.0”;
Timestamp tStamp = Timestamp.valueOf(str);
System.out.println(tStamp); //输出2010-1-2 08:08:08.0