您的位置:

如何将string转换为date类型

一、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类型的方法,其中大部分方法都需要注意线程安全问题和格式要求,使用时需要特别注意。在实际开发中,我们需要根据自己的具体场景选择最适合的方法。