Java中转换时间格式的方法有哪些?如何高效实现日期格式的转换?
- 后端开发
- 2025-10-27
- 5
在Java中,时间格式的转换是一个常见的操作,尤其是在处理日期和时间数据时,Java提供了多种方式来实现时间格式的转换,包括使用SimpleDateFormat类、DateTimeFormatter类以及Calendar类,以下是对这些方法的详细说明和示例。

使用SimpleDateFormat类
SimpleDateFormat是Java中用于解析和格式化日期和时间的经典类,以下是如何使用它来转换时间格式的步骤:
- 创建一个SimpleDateFormat对象,指定目标日期格式。
- 使用该对象对日期字符串进行解析或格式化。
示例
import java.text.SimpleDateFormat; import java.util.Date; public class SimpleDateFormatExample { public static void main(String[] args) { String originalDate = "20211231 23:59:59"; String targetFormat = "yyyyMMdd HH:mm:ss"; try { // 创建SimpleDateFormat对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss"); // 解析日期字符串 Date date = sdf.parse(originalDate); // 格式化日期对象 String formattedDate = new SimpleDateFormat(targetFormat).format(date); System.out.println("Formatted Date: " + formattedDate); } catch (Exception e) { e.printStackTrace(); } } }
使用DateTimeFormatter类
DateTimeFormatter是Java 8中引入的新类,用于日期和时间的解析和格式化,它是不可变的,线程安全的。

示例
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class DateTimeFormatterExample { public static void main(String[] args) { String originalDate = "20211231T23:59:59"; String targetFormat = "yyyyMMdd HH:mm:ss"; // 创建DateTimeFormatter对象 DateTimeFormatter sourceFormatter = DateTimeFormatter.ISO_DATE_TIME; DateTimeFormatter targetFormatter = DateTimeFormatter.ofPattern(targetFormat); // 解析日期字符串 LocalDateTime dateTime = LocalDateTime.parse(originalDate, sourceFormatter); // 格式化日期对象 String formattedDate = dateTime.format(targetFormatter); System.out.println("Formatted Date: " + formattedDate); } }
使用Calendar类
Calendar类提供了对日历字段的操作,可以用来进行日期的加减、格式化等操作。

示例
import java.util.Calendar; import java.text.SimpleDateFormat; public class CalendarExample { public static void main(String[] args) { String originalDate = "20211231 23:59:59"; String targetFormat = "yyyyMMdd HH:mm:ss"; try { // 创建Calendar对象 Calendar calendar = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss"); // 解析日期字符串 calendar.setTime(sdf.parse(originalDate)); // 创建新的SimpleDateFormat对象 SimpleDateFormat targetSdf = new SimpleDateFormat(targetFormat); // 格式化日期对象 String formattedDate = targetSdf.format(calendar.getTime()); System.out.println("Formatted Date: " + formattedDate); } catch (Exception e) { e.printStackTrace(); } } }
FAQs
Q1: 如何处理时间格式转换中的异常?
A1: 在进行时间格式转换时,可能会遇到日期格式不正确、日期字符串无效等问题,为了避免程序崩溃,你应该使用trycatch块来捕获可能抛出的异常,并相应地处理它们。
Q2: SimpleDateFormat和DateTimeFormatter哪个更推荐使用?
A2: 虽然两者都可以用来格式化日期和时间,但由于SimpleDateFormat是可变的,存在线程安全问题,而DateTimeFormatter是不可变的,线程安全,因此推荐在新的项目中使用DateTimeFormatter。