string转date详解(3种常见方法)

string转date详解(3种常见方法)-mikechen

list转date是Java开发经常使用到的,下面给大家介绍3种常用的list转date方法@mikechen

使用 SimpleDateFormat

我们可以使用 SimpleDateFormat 来指定日期字符串的格式,然后使用 parse 方法将字符串转换为日期对象。

如下所示:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class StringToDateExample {
    public static void main(String[] args) {
        String dateString = "2023-09-11";
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

        try {
            Date date = dateFormat.parse(dateString);
            System.out.println("转换后的日期:" + date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

运行结果:

转换后的日期:Mon Sep 11 00:00:00 UTC 2023

使用 SimpleDateFormat优势:

  • 简单易懂,适用于基本的日期格式。
  • Java 7及更早版本的标准解决方案。

使用 SimpleDateFormat劣势:

  • 不是线程安全的,需要谨慎在多线程环境中使用。
  • 缺乏对日期时间的灵活性和精确性。

 

使用 DateTimeFormatter

在Java 8及更高版本中,推荐使用java.time包中的LocalDate和DateTimeFormatter来执行日期转换。

如下所示:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class StringToDateExample {
    public static void main(String[] args) {
        String dateString = "2023-09-11";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

        LocalDate date = LocalDate.parse(dateString, formatter);
        System.out.println("转换后的日期:" + date);
    }
}

DateTimeFormatter允许您指定日期字符串的格式,而LocalDate是线程安全的日期类。

运行结果:

转换后的日期:2023-09-11

使用 DateTimeFormatter 优势:

  • 线程安全:java.time包中的类是线程安全的。
  • 支持更丰富的日期时间处理,包括时区、时间差等。
  • 支持更灵活的日期字符串解析。

使用 DateTimeFormatter 劣势:

需要Java 8或更高版本的支持,如果项目仍在使用旧版Java,需要考虑兼容性。

 

使用第三方库Apache Commons

还可以考虑使用第三方库,来执行日期字符串到日期对象的转换。

例如:使用Apache Commons Lang库的DateUtils类。

如下所示:

import org.apache.commons.lang3.time.DateUtils;
import java.text.ParseException;
import java.util.Date;

public class StringToDateExample {
    public static void main(String[] args) {
        String dateString = "2023-09-11";
        String[] patterns = {"yyyy-MM-dd"};

        try {
            Date date = DateUtils.parseDateStrictly(dateString, patterns);
            System.out.println("转换后的日期:" + date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

运行结果:

转换后的日期:Mon Sep 11 00:00:00 UTC 2023

使用第三方库Apache Commons优势:

  • 提供了简单易用的方法,适用于多种日期格式。
  • 灵活性,可以处理不同类型的日期字符串。

使用第三方库Apache Commons劣势:

  • 需要将第三方库添加到项目依赖中,可能需要一些学习成本。
  • 不一定支持所有高级日期时间操作。

如果你的项目使用的是Java 8或更高版本,强烈建议使用java.time包中的类和DateTimeFormatter,因为它们提供了更多的功能和线程安全性。

作者简介

陈睿|mikechen,10年+大厂架构经验,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注作者「mikechen」公众号,获取更多技术干货!

评论交流
    说说你的看法