一、string转换date类型
在很多场景下,我们需要将string类型的日期数据转换为Date类型。在Java中,一般有以下几种方法来实现:
1. string转换成date
使用SimpleDateFormat对象的parse方法,将String类型解析成Date类型:
String strDate = "2020-01-01"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = sdf.parse(strDate);
这种方式非常简单易懂,但是需要注意两点:
1)String类型与SimpleDateFormat格式必须一致
2)SimpleDateFormat.format()和SimpleDateFormat.parse()都不是线程安全的,需要注意线程安全问题
2. String转换Date
使用java.sql.Date.valueOf()方法,将String类型格式转换为Date类型:
String strDate = "2020-01-01"; Date date = java.sql.Date.valueOf(strDate);
这种方式比较简单,但是必须使用“yyyy-MM-dd”格式的String类型数据,否则会报错。
3. string转换integer
使用Calendar类的set方法,将String类型转换为Date类型:
String strDate = "2020-01-01"; Calendar cal = Calendar.getInstance(); String[] dateArr = strDate.split("-"); int year = Integer.valueOf(dateArr[0]); int month = Integer.valueOf(dateArr[1]) - 1; int day = Integer.valueOf(dateArr[2]); cal.set(year, month, day); Date date = cal.getTime();
这种方式比较麻烦,需要将String类型分割成年、月、日的三个整数,然后使用Calendar的set方法转换为Date类型。
二、string转date的方法
除了上述几种方法,还有一些其他的日期解析方式,下面我们一一介绍。
1. string转date类型
使用DateTimeFormatter类的ofPattern方法,将String类型转换为Date类型:
String strDate = "2020-01-01"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate localDate = LocalDate.parse(strDate, formatter); Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
这种方式将String类型日期解析为LocalDate类型,并且通过Date.from方法转换为Date类型。这种方式是线程安全的,可以放心使用。
2. String转换Date
使用Apache Commons Lang库中的DateUtils.parseDate方法,将String类型转换为Date类型:
String strDate = "2020-01-01"; Date date = DateUtils.parseDate(strDate, "yyyy-MM-dd");
这种方式简单易用,但是需要导入Apache Commons Lang库。
3. 如何将string转为date
使用Java 8中新的日期和时间API,将String类型转换为Date类型:
String strDate = "2020-01-01"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate localDate = LocalDate.parse(strDate, formatter); Date date = java.sql.Date.valueOf(localDate);
这种方式将String类型解析为LocalDate类型,然后通过java.sql.Date.valueOf方法将LocalDate类型转换为Date类型。
三、总结
本文介绍了多种将String类型转换为Date类型的方法,其中大部分方法都需要注意线程安全问题和格式要求,使用时需要特别注意。在实际开发中,我们需要根据自己的具体场景选择最适合的方法。