java时间日期格式化和JDBC中的处理
时间格式化类
SimpleDateFormat类
字符串格式化为时间对象 .parse()方法
// 从字符串提取出日期
String strDate = "2021-2-2";
String pat = "yyyy-MM-dd";
SimpleDateFormat format = new SimpleDateFormat(pat);
Date d = null;
try {
//生成时间对象
d = format2.parse(strDate);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(format.format(d));
时间对象格式化为字符串 .format()方法
// 将时间对象格式化为字符串
Calendar cal = Calendar.getInstance();
Date now = cal.getTime();
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
String strDate = format.format(now);
System.out.println(strDate);
DateTimeFormatter类
字符串转化为时间对象 .parse()
// 将字符串转化为时间
String dateStr = "2021年2月2日";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
LocalDate date = LocalDate.parse(dateStr, formatter);
System.out.println(date)
时间对象格式化为字符串 .format()
// 将日期转化为字符串
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 hh:mm:ss");
String nowStr = now.format(formatter2);
System.out.println(nowStr);
数据库中的日期时间类型与Java类中日期时间的对应
- 日期类型用java.sql.Date
- 时间类型用java.sql.Time
- 日期/时间类型用java.sql.Timestamp
范例:在oracle数据库中通过,
select sysday from dual
获取当前时间,在通过ResultSet获取查询结果时,用:getTimestamp(),可以把年月日时分秒都取出来,调用getDate()只能取出年月日,调用getTime()只能取出时分秒。
尽量不要调用getString()来获取日期/时间类型的数据
- 调用getString()获取时间类型的数据,JDBC在内部将日期/时间转换为字符串;但是这个字符串的格式却取决于数据库导致兼容性较差。
如何将JDBC的日期/时间类型转换为字符串
java.sql.Timestamp timeStamp = //通过数据库访问获取到该数据
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sdf.format(timeStamp);
select、update或insert时,如果某个字段为日期/时间类型,最好用PreparedStatement
PreparedStatement pstmt = conn.prepareStatement("insert into tab ( begin_date ) values( ?)");
pstmt.setTimestamp(1, new Timestamp(System.currentTimeMillis()));
pstmt.execute();
java.sql.Timestamp如何转换为java.util.Date
java.sql.Timestamp是java.util.Date的子类,不需要做任何转换直接赋值即可:
java.sql.Timestamp ts;
java.util.Date utilDate;
utilDate = ts;
java.util.Date转换为java.sql.Timestamp
java.sql.Timestamp ts;
java.util.Date utilDate;
ts.setTime(utilDate.getTime());
mysql数据库中的日期时间
- NOW()、SYSDATE()函数以`'YYYY-MM-DD HH:MM:SS’返回当前的日期时间,可以直接存到DATETIME字段中。
比如:select NOW(),SYSDATE(); - CURDATE()、CURRENT_DATE以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。
比如:SELECT CURDATE(),CURRENT_DATE; - CURTIME()、CURRENT_TIME以’HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。
比如:SELECT CURRENT_TIME(),CURRENT_TIME;
参考文章:
https://blog.csdn.net/weixin_42700628/article/details/93069011
https://www.cnblogs.com/vicosong/articles/9321362.html