📜  Java内部化-格式化日期(1)

📅  最后修改于: 2023-12-03 15:02:04.075000             🧑  作者: Mango

Java内部化-格式化日期

在Java的应用程序中,日期格式化是一个非常重要的任务。对于某些应用程序来说,日期格式的正确性是保证功能正确性的关键,如金融应用程序等。Java提供了一些内置类和方法来格式化日期,以满足我们的需求。

Date类

Java中一个常用的日期类是Date类。这个类有一个toString()方法可以返回日期和时间的字符串,但是它是以固定的格式输出的,这意味着我们不能按照我们自己的要求来格式化日期和时间的输出。

import java.util.Date;

public class DateDemo {
   public static void main(String args[]) {
      Date date = new Date();
      System.out.println(date.toString());
   }
}

输出:

Tue Mar 17 15:30:12 GMT+08:00 2020

这个输出格式并不优美。我们现在希望将日期和时间格式化为年月日时分秒的形式。

SimpleDateFormat类

我们可以使用SimpleDateFormat类来格式化日期和时间。这个类允许我们使用自定义模式来格式化日期和时间。

下面的表格列出了一些常用的日期和时间模式:

| 字母 | 含义 | 示例 | |------|------------------------------------------|-----------------| | y | 年份 | 2019 | | M | 月份 | 2 | | d | 一个月中的第几天 | 12 | | H | 小时(24小时制) | 23 | | m | 分 | 4 | | s | 秒 | 56 | | S | 毫秒 | 234 | | E | 星期几的名称(全称) | Wednesday | | D | 一年中的第几天 | 32 | | F | 一个月中的第几个星期几 (1-5) | 2 | | w | 一年中的第几个星期 | 7 | | W | 一个月中的第几个星期 (1-5) | 1 | | G | 公元前/后 (BC/AD) | AD | | a | 上午/下午 | AM/PM | | z | 时区 | Pacific Standard Time |

我们可以使用以下代码来将日期和时间格式化为标准形式:

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

public class DateFormatDemo {
   public static void main(String args[]) {
      Date date = new Date();
      SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      System.out.println("Current Date: " + ft.format(date));
   }
}

输出:

Current Date: 2020-03-17 15:34:12
国际化-LocalDateTime

在Java 8中引入了新的日期/时间API,它可以处理国际化格式的日期和时间。这个API包括Java.time.LocalDateTime类,它可以处理本地日期和时间,而无需考虑时区问题。

以下是使用Java.time.LocalDateTime类将日期和时间格式化为标准形式的示例:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class LocalDateTimeDemo {
   public static void main(String args[]) { 
      LocalDateTime myDateObj = LocalDateTime.now(); 
      System.out.println("Before formatting: " + myDateObj); 
      DateTimeFormatter myFormatObj = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss"); 
      String formattedDate = myDateObj.format(myFormatObj); 
      System.out.println("After formatting: " + formattedDate); 
   } 
}

输出:

Before formatting: 2020-03-17T15:35:12.502
After formatting: 17-03-2020 15:35:12
总结

Java提供了多种内置类和方法来格式化日期和时间。我们可以使用Date类和SimpleDateFormat类来处理常规的日期和时间格式化需求,而Java.time.LocalDateTime类则是处理其他国际化格式的日期和时间的绝佳选择。对于需要处理国际化格式日期和时间的应用程序,建议使用Java.time.LocalDateTime类,并使用DateTimeFormatter类来格式化日期和时间的输出。