Java String 转 Datetime

Java String 转 Datetime

Java String 转 Datetime

1. 概述

在Java开发中,经常会遇到将String类型的日期时间数据转化为Datetime类型的需求。这是因为在日常开发中,我们经常需要对日期时间进行比较、计算或格式化。Java提供了许多方法来实现这一转换,本文将详细介绍几种常用的方法和示例代码。

2. 使用 SimpleDateFormat 类

Java提供了SimpleDateFormat类来将String类型的日期时间转化为Datetime类型。SimpleDateFormat是一个线程不安全的类,但我们可以通过创建局部对象的方式来避免线程安全问题。

以下是一个示例代码:

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

public class StringToDatetimeExample {
    public static void main(String[] args) {
        String dateString = "2022-01-01 09:00:00";
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date;
        try {
            date = format.parse(dateString);
            System.out.println(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

运行上述程序,输出结果为:

Sat Jan 01 09:00:00 CST 2022

在上面的示例中,我们首先定义一个String类型的日期时间数据dateString。然后,我们创建了一个SimpleDateFormat对象,并指定了日期时间的格式为”yyyy-MM-dd HH:mm:ss”。接下来,我们通过调用format.parse()方法将String类型的日期时间转化为Date类型的时间对象。最后,我们将转换后的时间对象输出到控制台。

需要注意的是,SimpleDateFormat的日期时间格式必须与字符串日期时间格式一致,否则会抛出ParseException异常。

3. 使用 DateTimeFormatter 类

Java 8引入了新的日期时间API,其中的DateTimeFormatter类提供了更加强大和灵活的方式来处理日期时间的格式化和解析。与SimpleDateFormat不同的是,DateTimeFormatter是线程安全的。

以下是一个示例代码:

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

public class StringToDatetimeExample {
    public static void main(String[] args) {
        String dateString = "2022-01-01";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate date = LocalDate.parse(dateString, formatter);
        System.out.println(date);
    }
}

运行上述程序,输出结果为:

2022-01-01

在上面的示例中,我们首先定义了一个String类型的日期时间数据dateString。然后,我们创建了一个DateTimeFormatter对象,并指定了日期时间的格式为”yyyy-MM-dd”。接下来,我们通过调用parse()方法将String类型的日期时间转化为LocalDate类型的日期对象。最后,我们将转换后的日期对象输出到控制台。

需要注意的是,DateTimeFormatter的日期时间格式必须与字符串日期时间格式一致,否则会抛出DateTimeParseException异常。

4. 使用第三方库

除了Java原生的日期时间处理类之外,还有一些第三方库也提供了更加丰富和方便的日期时间转换方法。其中,比较常用的是Apache Commons Lang和Joda-Time库。

4.1 使用 Apache Commons Lang

Apache Commons Lang是一个常用的Java工具库,提供了大量的工具类和方法。其中,DateUtils类提供了一些用于日期时间转换的方法。

以下是一个示例代码:

import org.apache.commons.lang3.time.DateUtils;

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

public class StringToDatetimeExample {
    public static void main(String[] args) {
        String dateString = "2022-01-01 09:00:00";
        String[] patterns = {"yyyy-MM-dd HH:mm:ss"};
        try {
            Date date = DateUtils.parseDate(dateString, patterns);
            System.out.println(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

运行上述程序,输出结果为:

Sat Jan 01 09:00:00 CST 2022

在上面的示例中,我们首先定义了一个String类型的日期时间数据dateString。然后,我们通过调用DateUtils.parseDate()方法将String类型的日期时间转化为Date类型的日期对象。方法的第二个参数是一个字符串数组,用于指定日期时间的格式。如果日期时间的格式有多种可能,可以在数组中指定多个格式,parseDate()方法会依次尝试这些格式。

需要注意的是,使用Apache Commons Lang库需要在项目中引入该库的依赖。

4.2 使用 Joda-Time

Joda-Time是一个流行的Java日期时间库,提供了比Java原生日期时间类更强大和易用的功能。

以下是一个示例代码:

import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

public class StringToDatetimeExample {
    public static void main(String[] args) {
        String dateString = "2022-01-01 09:00:00";
        DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
        DateTime dateTime = formatter.parseDateTime(dateString);
        System.out.println(dateTime);
    }
}

运行上述程序,输出结果为:

2022-01-01T09:00:00.000+08:00

在上面的示例中,我们首先定义了一个String类型的日期时间数据dateString。然后,我们创建了一个DateTimeFormatter对象,并指定了日期时间的格式为”yyyy-MM-dd HH:mm:ss”。接下来,我们通过调用parseDateTime()方法将String类型的日期时间转化为DateTime类型的日期时间对象。最后,我们将转换后的日期时间对象输出到控制台。

需要注意的是,使用Joda-Time库需要在项目中引入该库的依赖。

5. 总结

本文介绍了几种常用的方法来将String类型的日期时间转化为Datetime类型。可以根据实际的需求选择合适的方法来进行日期时间的转换。使用Java原生类的方式简单明了,但在处理复杂的日期时间格式时可能不够灵活;而使用第三方库可以提供更多的功能和选项,但需要引入额外的依赖。在实际开发中,根据具体情况选择合适的方法和工具来处理日期时间转换。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程