在 Java 中转换字符串到 DateTime 对象

Rupam Yadav 2023年1月30日 2020年12月19日
  1. 在 Java 中使用 SimpleDateFormatjava.util.Date 把一个日期字符串转换为 DateTime 对象
  2. 使用 Java 8 日期和时间库将日期字符串转换为日期时间格式
  3. 使用 joda-time 将日期字符串转换为日期时间格式
  4. 在 Java 中使用 Timestamp 构造函数将字符串日期 Date 转换为时间戳 Timestamp
  5. 在 Java 中用 LocalDate 将日期字符串转换为时间戳
  6. 在 Java 中使用 atStartOfDay() 方法将字符串日期转换为时间戳
在 Java 中转换字符串到 DateTime 对象

本文将介绍我们如何使用不同的方法和例子将给定的字符串转换为一个 DateTime 对象。

在 Java 中使用 SimpleDateFormatjava.util.Date 把一个日期字符串转换为 DateTime 对象

SimpleDateFormat 是一个用于以本地化敏感方式解析和格式化日期的类。它允许我们将一个字符串转换为 DateTime,并将一个 DateTime 对象转换为一个字符串。

在下面的代码中,我们使用了一个字符串 date_time,通过调用 SimpleDateFormat 实例 dateParser 上的 parse 方法来解析。我们希望字符串 date_time 被解析的格式是在 SimpleDateFormat 构造函数中指定的。

我们还创建了一个新的 SimpleDateFormat 类的实例,并使用不同的格式。解析后的 date 将被格式化并打印出来。

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

public class StringToDateTime {
    public static void main(String [] args){
      
        String date_time = "11/27/2020 05:35:00";
        SimpleDateFormat dateParser = new SimpleDateFormat("MM/dd/yy HH:mm:ss");
        {
            try {
                Date date = dateParser.parse(date_time);
                System.out.println(date);

                SimpleDateFormat dateFormatter = new SimpleDateFormat("MM/dd/yy");
                System.out.println(dateFormatter.format(date));

            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
    }
}

输出:

Fri Nov 27 05:35:00 UTC 2020
11/27/20

使用 Java 8 日期和时间库将日期字符串转换为日期时间格式

LocaleDate 类表示不含时间的 ISO 格式的日期。DateTimeFormatter 类用于解析不同格式的日期。我们可以通过调用 DateTimeFormatter 上的 ofPattern() 方法提供自定义模式。

LocaleDate 有一个 parse() 方法,它将自定义的文本字符串和特定的格式器 inputFormat 进行解析,得到一个 LocalDate 实例。获得的 LocaleDate 实例 date 然后被格式化并打印为输出。

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

public class Main {
    public static void main(String [] args){
      
        DateTimeFormatter inputFormat = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss");
     
        LocalDate date = LocalDate.parse("11/27/2020 05:35:00", inputFormat);

        DateTimeFormatter outputFormat = DateTimeFormatter.ofPattern("MM/dd/yyyy");
        System.out.println(date.format(outputFormat));
    }
}

输出:

11/27/2020

使用 joda-time 将日期字符串转换为日期时间格式

joda-time 是一个标准的 DateTime 库,它提供了丰富的方法来执行日期和时间计算。下面给出了包含该库功能的 maven 依赖关系。

 <!-- https://mvnrepository.com/artifact/joda-time/joda-time -->
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.10.8</version>
    </dependency>

DateTimeFormatter 可以解析日期和时间的自定义表示。

我们用自定义模式创建一个 formatter 实例 datetimeformat。在 formatter 实例上调用 parseDateTime,使用自定义字符串 dateTime 给出一个 DateTime 对象。

在这里,我们创建了一个新的 DateTimeFormatter 实例 dateTimeFormatOut,使用不同的自定义模式。print() 方法在新的实例上被调用,它以新的格式打印 DateTime 对象 joda_time

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

public class StringToDateTime {
    public static void main(String [] args){
      
        String dateTime = "11/27/2020 05:35:00";
        DateTimeFormatter datetimeformat = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss");

        DateTime joda_time = datetimeformat.parseDateTime(dateTime);
        System.out.println("joda_time : "+joda_time);
        
        DateTimeFormatter dateTimeFormatOut = DateTimeFormat.forPattern("MM/dd/yyyy");
        System.out.println("date time format out:  "+dateTimeFormatOut.print(joda_time));
    }
}

输出:

joda_time : 2020-11-27T05:35:00.000+05:30
date time format out:  11/27/2020

在 Java 中使用 Timestamp 构造函数将字符串日期 Date 转换为时间戳 Timestamp

在这里,我们使用 Timestamp 构造函数来获取一个时间戳 Timestamp 对象。首先,我们使用 SimpleDateFormat 类设置 date 的格式,然后使用 parser() 方法得到日期对象,然后使用 geteTime() 方法将时间与日期相加,得到一个 timestamp 的结果。请看下面的例子。

import java.util.Date;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class SimpleTesting {

    public static void main(String[] args) {
        try {
              DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
              Date date = dateFormat.parse("12/10/1990");
              Timestamp timeStampDate = new Timestamp(date.getTime());
              System.out.println(timeStampDate);
            } catch (ParseException e) {
              System.out.println(e);
            }
    }
}

输出:

 1990-10-12 00:00:00.0

在 Java 中用 LocalDate 将日期字符串转换为时间戳

在 Java 8 中,它增加了一个新的 java.time 包,其中包含几个处理日期和时间的类。在这里,我们使用该包中的 LocalDate 类。我们使用 LocalDate 类的 parse() 方法从日期字符串中得到 LocalDate 对象,然后使用 atTime() 方法得到 LocalDateTime 对象,返回一个带时间的日期。now() 用于获取系统的当前时间。

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

public class SimpleTesting {

    public static void main(String[] args) {
              LocalDate date = LocalDate.parse("2025-11-25");
              System.out.println(date);
              LocalDateTime dateTime = date.atTime(LocalTime.now());
              System.out.println(dateTime);
              
    }
}

输出:

2025-11-25
2025-11-25T09:44:56.814795

在 Java 中使用 atStartOfDay() 方法将字符串日期转换为时间戳

LocalDate 类中的 atStartOfDay() 方法也用于获取 LocalDateTime 对象。该方法在一天开始时将时间添加到日期中,并返回一个日期-时间而不是一个简单的日期。请看下面的例子。

import java.time.LocalDate;
import java.time.LocalDateTime;

public class SimpleTesting {

    public static void main(String[] args) {
        String strDate = "2019-10-20";
        LocalDate date = LocalDate.parse(strDate);
        LocalDateTime dateTime = date.atStartOfDay();
        System.out.println(dateTime);
    }
}

输出:

2019-10-20T00:00
Author: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

相关文章 - Java DateTime