**

String类型和Date类型怎样相互转换?

**
1、format方法可以把Date类型转换成特定格式的String类型,如果Date类型和定义的SimpleDateFormat长度不一致会自动在后面补充0

//自定义需要输出的String格式SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");//输出“20230317104202”String nowDate = sdf.format(new Date());SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//输出“2023-03-17 10:46:07”String nowDate2 = sdf2.format(new Date());

2. parse方法可以把String型的字符串转换成特定格式的date类型,使用parse时字符串长度要和定义的SimpleDateFormat对象长度一致

void test() {SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");try {Date date =df.parse("2016-2-18");//Thu Feb 18 00:00:00 CST 2016System.out.println(date);} catch (ParseException e) {e.printStackTrace();}}

下面test2的例子,由于位数不同,会报异常Unparseable date: “2016-02-18 00:00:00”

 void test2() {DateFormat format2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");// String转DateString str = "2016-02-18 00:00:00";try {Date date2 = format2.parse(str);System.out.println(date2);} catch (ParseException e) {e.printStackTrace();}}

下方是正确的用

void test3() {DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// String转DateString str = "2016-02-18 00:00:00";try {Date date2 = format2.parse(str);//Thu Feb 18 00:00:00 CST 2016System.out.println(date2);} catch (ParseException e) {e.printStackTrace();}}

3.将Date类型转换为yyyy-mm-dd的Date形式或将String类型转换为yyyy-mm-dd的Date形式

void test4() {Date currentTime = new Date();SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");String dateString = formatter.format(currentTime);Date date = java.sql.Date.valueOf(dateString);//2023-03-17System.out.println(date);}
void test5() {String dateString = "2023-03-17";Date date1 = java.sql.Date.valueOf(dateString);//2023-03-17System.out.println(date1);}

日期缺位数的话会自动补全

void test6() {String dateString = "2023-3-7";Date date1 = java.sql.Date.valueOf(dateString);;System.out.println(date1);}``