Java 日期格式转换

简介

在Java中,我们经常需要处理日期和时间的转换。日期格式转换是将日期和时间从一种格式转换成另一种格式的过程。这在开发中非常常见,特别是在处理数据和进行数据分析时。Java提供了一系列的类和方法来帮助我们进行日期格式转换,使我们能够更轻松地处理日期和时间。

本文将介绍Java中常用的日期格式转换的方法,并提供代码示例来帮助读者更好地理解和应用这些方法。

日期格式转换方法

Java提供了多种日期格式转换方法,包括以下几种常用方法:

  1. SimpleDateFormat类:这个类是Java中最常用的日期格式转换类之一。它可以将日期和时间格式化为指定的字符串,也可以将字符串解析为日期和时间。下面是一个简单的示例:
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatExample {
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        // 格式化日期
        Date now = new Date();
        String formattedDate = sdf.format(now);
        System.out.println("Formatted date: " + formattedDate);
        
        // 解析日期
        String dateStr = "2022-01-01 12:00:00";
        try {
            Date parsedDate = sdf.parse(dateStr);
            System.out.println("Parsed date: " + parsedDate);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  1. DateTimeFormatter类:这个类是Java 8中引入的新类,用于格式化和解析日期和时间。它提供了更加灵活和易用的方法来进行日期格式转换。下面是一个示例:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeFormatterExample {
    public static void main(String[] args) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        
        // 格式化日期
        LocalDateTime now = LocalDateTime.now();
        String formattedDate = now.format(formatter);
        System.out.println("Formatted date: " + formattedDate);
        
        // 解析日期
        String dateStr = "2022-01-01 12:00:00";
        LocalDateTime parsedDate = LocalDateTime.parse(dateStr, formatter);
        System.out.println("Parsed date: " + parsedDate);
    }
}
  1. Calendar类:这个类是Java中用于处理日期和时间的类之一。它提供了一系列方法来进行日期计算和格式化。下面是一个示例:
import java.util.Calendar;

public class CalendarExample {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        
        // 格式化日期
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1; // 月份从0开始计数,所以需要+1
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);
        
        String formattedDate = String.format("%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second);
        System.out.println("Formatted date: " + formattedDate);
        
        // 解析日期
        String dateStr = "2022-01-01 12:00:00";
        String[] dateParts = dateStr.split(" ");
        String[] date = dateParts[0].split("-");
        String[] time = dateParts[1].split(":");
        
        int parsedYear = Integer.parseInt(date[0]);
        int parsedMonth = Integer.parseInt(date[1]);
        int parsedDay = Integer.parseInt(date[2]);
        int parsedHour = Integer.parseInt(time[0]);
        int parsedMinute = Integer.parseInt(time[1]);
        int parsedSecond = Integer.parseInt(time[2]);
        
        calendar.set(parsedYear, parsedMonth - 1, parsedDay, parsedHour, parsedMinute, parsedSecond);
        System.out.println("Parsed date: " + calendar.getTime());
    }
}

表格

下面是一个比较常见的日期格式的表格,包括日期格式的模式和示例:

模式 日期格式示例
yyyy-MM-dd 2022-01-01
yyyy-MM-dd HH:mm:ss 2022-01-01 12:00:00

类图

下面是一个简单的日期格式转换类的类图