如何在Java中将String转换为Date对象?

以下代码显示了如何将日期的字符串表示形式转换为java.util.Date对象。

要转换日期字符串,我们可以使用java.text.SimpleDateFormat扩展java.text.DateFormat抽象类的帮助。

package org.nhooo.example.text;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;

public class ConvertStringToDateExample {
    public static void main(String[] args) {
        String pattern = "dd/MM/yyyy";
        String date = "28/01/2018";

        try {
            DateFormat df = new SimpleDateFormat(pattern);
            Date today = df.parse(date);
            System.out.println("Today = " + df.format(today));
        } catch (ParseException e) {
            e.printStackTrace();
        }

        // 使用Java 8日期和时间
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
        LocalDate localDate = LocalDate.parse(date, formatter);
        System.out.println("Today = " + localDate.format(formatter));
    }
}

这是我们的代码的结果:

Today = 28/01/2018
Today = 28/01/2018

该示例通过创建一个实例开始SimpleDateFormat与dd/MM/yyyy这意味着日期字符串以日-月-年顺序格式的格式。

最后使用parse(stringsource)方法我们可以得到Date实例。因为parse方法可以抛出java.text.ParseException异常如果提供的日期格式无效,则出现异常;我们需要捕获它。

这是可用于格式化从Java类文档获取日期的已定义模式的列表。

信件日期/时间部分例子
G

Era指示符

AD
yYear1996; 96
M

一年中的月份

July; Jul; 07
w

一年中的星期

27
W月份中的周2
D一年中的某一天189
d月的一天10
F每月的星期几2
E星期几Tuesday; Tue
a

Am/pm标记

PM
H

一天中的小时数(0-23)

0
k

一天中的小时数(1-24)

24
K

上午/下午(0-11)时

0
h

上午/下午(1-12)时

12
m每小时分钟30
s55
S毫秒978
z时区Pacific Standard Time; PST; GMT-08:00
Z时区-0800