Java中使用SimpleDateFormat进行String、Date、Calendar、Timestamp之间的转换

原文:[java]转:String Date Calendar之间的转换
作者:祺祺妈妈

关于SimpleDateFormat

基本介绍

包含在Javajava.text.SimpleDateFormat包中,用于在DateString之间转换。

日期和时间模式字符串

简单的说就是生成的(或接收的)字符串的格式,其中特定的字符被特定的时间信息(如年、月、日)等替代,对照表如下。

java-date-mode-string

使用严格限制转换

默认创建的实例的日期格式是不严格的,即它会认为2018-13-1为合法的日期,并且自动转换成2019-1-1(月份自动+1),实际使用时很多情况下不会使用到该特性,更多还是希望抛出格式错误的异常。

解决方法:该类的实例包括一个方法setLenient(),传入参数false即可设置该实例使用严格限制的日期转换,如下。

1
2
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setLenient(false)

转换示例

Calendar 转 String

1
2
3
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = sdf.format(calendar.getTime());

String 转 Calendar

1
2
3
4
5
String str = "2012-5-27";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(str);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

Date 转 String

1
2
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = sdf.format(new Date());

String 转 Date

1
2
3
String str = "2012-5-27";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date= sdf.parse(str);

Date 转 Calendar

1
2
Calendar calendar = Calendar.getInstance();
calendar.setTime(new java.util.Date());

Calendar 转 Date

1
2
Calendar calendar = Calendar.getInstance();
java.util.Date date = calendar.getTime();

String 转 Timestamp

1
Timestamp ts = Timestamp.valueOf("2012-1-14 08:11:00");

Date 转 Timestamp

1
2
3
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = df.format(new Date());
Timestamp ts = Timestamp.valueOf(time);