下面是常用处理日期的方法,希望对大家有用!
在我mysql 数据库中有张Blog表的字段为Date型,我们经常做的是把它取出来放在页面上显示具体的年月日或包括时分秒 !
public static String DRIVER = "com.mysql.jdbc.Driver";
public static String URL = "jdbc:mysql://localhost:3306/blog";
public static String USERNAME = "root";
public static String PASSWORD = "123";
/**
* @param args
* 和数据库打交道的类
* java sql.Date 日期类
* java sql Time 时间类
* java sql Timestamp 日期时间类
* 这三个类都继承 java .util Date
* 通过SimpleDataFormat 进行格式化
* java .util .Calendar 日历类可以取得所有东西 它继承Object类
* java .util .Timezone 时区类 传进一个Calendar 一般我们得到的Calendar是系统默认的时去 要设置时区传进一个Calendar 即可
*/
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL, USERNAME,
PASSWORD);
String sql = "select birthday from date";
ps =conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next())
{
把数据库中的Date行转换为String行 Date 类型只能拿到日期 不能拿到时间
Date date =rs.getDate("birthday");//返回的是一个日期类型
System.out.println(rs.getDate("birthday"));//这里打印出来的是2009-09-16
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); 对日期进行特殊格式化
sdf.format(date);sdf.format传进的是一个Date型
System.out.println(sdf.format(date));
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); 取得时间 这是不行的 打印出来时00:00:00 因为它只放 了日期没有存时间所以都是0 故这段代码是行不通的 !
要想取得时分秒 用Timestamp 这个类 该类是java util date 子类 所有也可用SimpleDateFormat.format()
Timestamp ts = rs.getTimestamp("birthday");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
sdf.format(ts));传进入一 Timestampe时间戳类型
System.out.println(sdf.format(ts));
要取得某个月份或某个年份,时区,这个月份的第几天等等 用Calendar这个类
Calendar cal =Calendar.getInstance()得到的是系统当前时间先得到一个Calendar对象
它不能new 因为他的构造器都是proteced类型的 只能通过Calendar.getInstance()得到他的对象
要想得到数据库中字段的时间要用setTime(Date date);参数必须为时间类型 正好我们把从数据库中得到的Date型传进去
Calendar cal =Calendar.getInstance();
Date date =rs.getDate("birthday");//
cal.setTime(date);//把数据库中得到的Date型传进去
System.out.println(cal.get(Calendar.MONTH)+1);//取得数据库中时间的月份 默认1月为0 所以必须加1,这里的方法很多我
就在这里不多赘述了,请参考Calendar类
把字符串转换为日期的格式
String s = "1987-12-24 08:24:37.0";//后面的时分秒都可以不加
Timestamp t = Timestamp.valueOf(s);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
System.out.println(sdf.format(t));
System.out.println(t);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally
{
try {
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}