在Java中把字符串转换为日期(LocalDate, LocalDateTime, ZonedDateTime, LocalTime)。
在这篇文章中,你会看到几个例子,演示如何在Java中把一个以字符串表示的日期转换成Date、LocalDate、LocalDateTime、ZonedDateTime或LocalTime实例。
如何在Java中使用SimpleDateFormat将字符串转换为日期
通过使用一些模式和符号,日期被表示为字符串。Java的SimpleDateFormat类使用以下模式和符号来解析字符串到日期。
让我们看一个例子。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatExample {
public static void main(String[] args) {
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = "2020-01-31";
try {
// Parsing a String to Date
Date date = dateFormatter.parse(dateStr);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
下面是另一个例子,我们解析一个更复杂的日期时间表示。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatExample {
public static void main(String[] args) {
SimpleDateFormat dateTimeFormatter = new SimpleDateFormat("E, MMM dd yyyy, hh:mm:ss a");
String dateTimeStr = "Fri, Jan 31 2020, 10:30:45 PM";
try {
// Parse the String representation of date and time to Date
Date date = dateTimeFormatter.parse(dateTimeStr);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
转换/解析一个字符串到本地日期
我们还可以使用Java 8中引入的DateTime API,将一个字符串转换为各种DateTime类的实例,如LocalDate、LocalTime、LocalDateTime、ZonedDateTime等。
DateTime API有一个DateTimeFormatter类,可以用来定义日期时间格式,并根据指定的日期时间格式来解析字符串。DateTimeFormatter类使用以下模式和符号。
让我们看一个将String解析为LocalDate的例子。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class LocalDateParseExample {
public static void main(String[] args) {
// Parse a String in ISO Date format (yyyy-MM-dd) to LocalDate
LocalDate date1 = LocalDate.parse("2020-02-28");
System.out.println(date1);
// Parse a String in a custom date format to LocalDate using DateTimeFormatter
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date2 = LocalDate.parse("28/02/2020", dateFormatter);
System.out.println(date2);
// Parse a String in a custom date-time format to LocalDate using DateTimeFormatter
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("E, MMM dd yyyy, hh:mm:ss a");
LocalDate date3 = LocalDate.parse("Fri, Feb 14 2020, 10:20:50 PM", dateTimeFormatter);
System.out.println(date3);
}
}
转换/解析一个字符串为LocalDateTime
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class LocalDateTimeParseExample {
public static void main(String[] args) {
// Parse a String in ISO DateTime format (yyyy-MM-ddTHH:mm:ss) to LocalDateTime
LocalDateTime dateTime1 = LocalDateTime.parse("2020-01-31T10:15:30");
System.out.println(dateTime1);
// Parse a String in a custom date format to LocalDate using DateTimeFormatter
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("MMM dd yyyy, HH:mm");
LocalDateTime dateTime2 = LocalDateTime.parse("Jan 11 2020, 10:30", dateTimeFormatter);
System.out.println(dateTime2);
// Parse a String in a custom DateTime format to LocalDateTime using DateTimeFormatter
DateTimeFormatter descriptiveDateTimeFormatter = DateTimeFormatter.ofPattern("E, MMM dd yyyy, hh:mm:ss a");
LocalDateTime dateTime3 = LocalDateTime.parse("Fri, Feb 14 2020, 10:20:50 PM", descriptiveDateTimeFormatter);
System.out.println(dateTime3);
}
}
转换/解析一个字符串为本地时间
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class LocalTimeParseExample {
public static void main(String[] args) {
// Parse a String in ISO Time format (HH:mm:ss) to LocalDate
LocalTime time1 = LocalTime.parse("12:30:50");
System.out.println(time1);
// Parse a String in a custom date format to LocalTime using DateTimeFormatter
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss");
LocalTime time2 = LocalTime.parse("28/02/2020 16:45:30", dateTimeFormatter);
System.out.println(time2);
}
}
转换/解析一个字符串为分区日期时间(ZonedDateTime
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
public class ZonedDateTimeParseExample {
public static void main(String[] args) {
// Parse a String in ISO DateTime format to ZonedDateTime
ZonedDateTime dateTime1 = ZonedDateTime.parse("2020-01-31T10:15:30+01:00[Europe/Paris]");
System.out.println(dateTime1);
// Parse a String in a custom date time format to ZonedDateTime using DateTimeFormatter
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("MMM dd yyyy, HH:mm (VV)");
ZonedDateTime dateTime2 = ZonedDateTime.parse("Jan 11 2020, 10:30 (America/Los_Angeles)", dateTimeFormatter);
System.out.println(dateTime2);
}
}