Java教程-Java日期格式化

Java日期格式化
在Java中有两个用于格式化日期的类:DateFormat和SimpleDateFormat。
java.text.DateFormat类提供了各种方法,以以语言无关的方式格式化和解析日期和时间。DateFormat类是一个抽象类,它的父类是Format类,而java.text.SimpleDateFormat是java.text.DateFormat类的子类。
在Java中,将日期转换为字符串称为格式化,而将字符串转换为日期称为解析。换句话说,格式化意味着将日期转换为字符串,解析意味着将字符串转换为日期。
java.text.DateFormat方法
编号 | 公共方法 | 描述 |
---|---|---|
1) | final String format(Date date) | 将给定的Date对象转换为字符串。 |
2) | Date parse(String source)throws ParseException | 将字符串转换为Date对象。 |
3) | static final DateFormat getTimeInstance() | 返回具有默认格式化样式的时间格式化程序,默认区域设置。 |
4) | static final DateFormat getTimeInstance(int style) | 返回具有给定格式化样式的时间格式化程序,默认区域设置。 |
5) | static final DateFormat getTimeInstance(int style, Locale locale) | 返回具有给定格式化样式的时间格式化程序,给定区域设置。 |
6) | static final DateFormat getDateInstance() | 返回具有默认格式化样式的日期格式化程序,默认区域设置。 |
7) | static final DateFormat getDateInstance(int style) | 返回具有给定格式化样式的日期格式化程序,默认区域设置。 |
8) | static final DateFormat getDateInstance(int style, Locale locale) | 返回具有给定格式化样式的日期格式化程序,给定区域设置。 |
9) | static final DateFormat getDateTimeInstance() | 返回具有默认格式化样式的日期/时间格式化程序,默认区域设置。 |
10) | static final DateFormat getDateTimeInstance(int dateStyle,int timeStyle) | 返回具有给定日期格式化样式和时间格式化样式的日期/时间格式化程序,默认区域设置。 |
11) | static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale locale) | 返回具有给定日期格式化样式和时间格式化样式的日期/时间格式化程序,给定区域设置。 |
12) | static final DateFormat getInstance() | 返回具有日期和时间的短格式化样式的日期/时间格式化程序。 |
13) | static Locale[] getAvailableLocales() | 返回可用区域设置的数组。 |
14) | Calendar getCalendar() | 返回此DateFormat实例的Calendar实例。 |
15) | NumberFormat getNumberFormat() | 返回此DateFormat实例的NumberFormat实例。 |
16) | TimeZone getTimeZone() | 返回此DateFormat实例的TimeZone实例。 |
Java DateFormat 示例:日期转换为字符串
让我们看一个使用 java.text.DateFormat
类在 Java 中格式化日期和时间的简单示例。
文件名: DateFormatExample.java
1. import java.text.DateFormat;
2. import java.util.Date;
3.
4. public class DateFormatExample {
5. public static void main(String[] args) {
6. Date currentDate = new Date();
7. System.out.println("当前日期:" + currentDate);
8. String dateToStr = DateFormat.getInstance().format(currentDate);
9. System.out.println("使用 getInstance() 方法进行日期格式化:" + dateToStr);
10. }
11. }
输出:
当前日期:Tue Mar 31 14:37:23 IST 2015
使用 getInstance() 方法进行日期格式化:31/3/15 2:37 PM
让我们看一个完整的示例,使用 java.text.DateFormat
类在 Java 中格式化日期和时间。
文件名: DateFormatExample2.java
1. import java.text.DateFormat;
2. import java.util.Date;
3.
4. public class DateFormatExample2 {
5. public static void main(String[] args) {
6. Date currentDate = new Date();
7. System.out.println("当前日期:" + currentDate);
8.
9. String dateToStr = DateFormat.getInstance().format(currentDate);
10. System.out.println("使用 getInstance() 方法进行日期格式化:" + dateToStr);
11.
12. dateToStr = DateFormat.getDateInstance().format(currentDate);
13. System.out.println("使用 getDateInstance() 方法进行日期格式化:" + dateToStr);
14.
15. dateToStr = DateFormat.getTimeInstance().format(currentDate);
16. System.out.println("使用 getTimeInstance() 方法进行日期格式化:" + dateToStr);
17.
18. dateToStr = DateFormat.getDateTimeInstance().format(currentDate);
19. System.out.println("使用 getDateTimeInstance() 方法进行日期格式化:" + dateToStr);
20.
21. dateToStr = DateFormat.getTimeInstance(DateFormat.SHORT).format(currentDate);
22. System.out.println("使用 getTimeInstance(DateFormat.SHORT) 方法进行日期格式化:" + dateToStr);
23.
24. dateToStr = DateFormat.getTimeInstance(DateFormat.MEDIUM).format(currentDate);
25. System.out.println("使用 getTimeInstance(DateFormat.MEDIUM) 方法进行日期格式化:" + dateToStr);
26.
27. dateToStr = DateFormat.getTimeInstance(DateFormat.LONG).format(currentDate);
28. System.out.println("使用 getTimeInstance(DateFormat.LONG) 方法进行日期格式化:" + dateToStr);
29.
30. dateToStr = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT).format(currentDate);
31. System.out.println("使用 getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT) 方法进行日期格式化:" + dateToStr);
32. }
33. }
当前日期:Tue Mar 31 14:37:23 IST 2015
使用 getInstance() 方法进行日期格式化:31/3/15 2:37 PM
使用 getDateInstance() 方法进行日期格式化:31 Mar, 2015
使用 getTimeInstance() 方法进行日期格式化:2:37:23 PM
使用 getDateTimeInstance() 方法进行日期格式化:31 Mar, 2015 2:37:23 PM
使用 getTimeInstance(DateFormat.SHORT) 方法进行日期格式化:2:37 PM
使用 getTimeInstance(DateFormat.MEDIUM) 方法进行日期格式化:2:37:23 PM
使用 getTimeInstance(DateFormat.LONG) 方法进行日期格式化:2:37:23 PM IST
使用 getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT) 方法进行日期格式化:31 March, 2015 2:37 PM
Java DateFormat 示例:字符串转换为日期
让我们看一个使用 java.text.DateFormat
类将字符串转换为日期的简单示例。
文件名: DateFormatExample3.java
1. import java.text.DateFormat;
2. import java.util.Date;
3.
4. public class DateFormatExample3 {
5. public static void main(String[] args) throws Exception {
6. Date d = DateFormat.getDateInstance().parse("31 Mar, 2015");
7. System.out.println("日期为:" + d);
8. }
9. }
输出:
日期为:Tue Mar 31 00:00:00 IST 2015
Java DateFormat 示例:getTimeInstance(int style, Locale locale)
让我们看一下 getTimeInstance(int style, Locale locale)
方法的工作原理。
文件名: GetTimeInstanceExample.java
1. import java.util.Date;
2. import java.util.Locale;
3. import java.text.DateFormat;
4.
5. public class GetTimeInstanceExample {
6. public static void main(String[] args) throws Exception {
7. Locale locale = Locale.FRENCH;
8. Date d = new Date();
9. DateFormat dFormat = DateFormat.getTimeInstance(DateFormat.SHORT, locale);
10. String str = dFormat.format(d);
11. System.out.println(str);
12. }
13. }
输出:
13:12
Java DateFormat 示例:getDateInstance(int style)
让我们看一下 getDateInstance(int style)
方法的工作原理。
文件名: GetDateInstanceExample.java
1. import java.util.Date;
2. import java.util.Locale;
3. import java.text.DateFormat;
4.
5. public class GetDateInstanceExample {
6. public static void main(String[] args) throws Exception {
7. Date d = new Date();
8. DateFormat dFormat = DateFormat.getDateInstance(DateFormat.SHORT);
9. String str = dFormat.format(d);
10. System.out.println(str);
11. }
12. }
输出:
12/2/21
Java DateFormat 示例:getDateInstance(int style, Locale locale)
让我们看一下 getDateInstance(int style, Locale locale)
方法的工作原理。
文件名: GetDateInstanceExample1.java
1. import java.util.Date;
2. import java.util.Locale;
3. import java.text.DateFormat;
4.
5. public class GetDateInstanceExample1 {
6. public static void main(String[] args) throws Exception {
7. Locale locale = Locale.FRENCH;
8. Date d = new Date();
9. DateFormat dFormat = DateFormat.getDateInstance(DateFormat.SHORT, locale);
10. String str = dFormat.format(d);
11. System.out.println(str);
12. }
13. }
输出:
02/12/2021
Java DateFormat 示例:getDateTimeInstance(int dateStyle, int timeStyle, Locale locale)
让我们看一下 getDateTimeInstance(int dateStyle, int timeStyle, Locale locale)
方法的工作原理。
文件名: GetDateTimeInstanceExample.java
1. import java.util.Date;
2. import java.util.Locale;
3. import java.text.DateFormat;
4.
5. public class GetDateTimeInstanceExample {
6. public static void main(String[] args) throws Exception {
7. Locale locale = Locale.FRENCH;
8. Date d = new Date();
9. DateFormat dFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, locale);
10. String str = dFormat.format(d);
11. System.out.println(str);
12. }
13. }
输出:
02/12/2021 14:16:34 GMT
Java DateFormat 示例:getCalendar()
让我们看一下 getCalendar()
方法的工作原理。
文件名: GetCalendarExample.java
1. import java.util.Date;
2. import java.text.DateFormat;
3.
4. public class GetCalendarExample {
5. public static void main(String[] args) throws Exception {
6. DateFormat dFormat = DateFormat.getDateTimeInstance();
7. System.out.println(dFormat.getCalendar());
8. }
9. }
输出:
java.util.GregorianCalendar[time = -886152493222, areFieldsSet = true, areAllFieldsSet = true, lenient = true, zone = sun.util.calendar.ZoneInfo[id = "GMT", offset=0, dstSavings = 0, useDaylight = false, transitions = 0, lastRule = null], firstDayOfWeek = 1, minimalDaysInFirstWeek = 1,ERA = 1, YEAR = 1941, MONTH = 11, WEEK_OF_YEAR = 49, WEEK_OF_MONTH = 1, DAY_OF_MONTH = 2, DAY_OF_YEAR = 336, DAY_OF_WEEK = 3, DAY_OF_WEEK_IN_MONTH = 1, AM_PM = 1, HOUR = 2, HOUR_OF_DAY = 14, MINUTE = 31, SECOND = 46, MILLISECOND = 778, ZONE_OFFSET = 0, DST_OFFSET = 0]
Java DateFormat 示例:getNumberFormat()
让我们看一下 getNumberFormat()
方法的工作原理。
文件名: GetNumberFormatExample.java
1. import java.text.NumberFormat;
2. import java.text.DateFormat;
3.
4. public class DateFormatDemo {
5. public static void main(String[] args) {
6. DateFormat dFormat = DateFormat.getTimeInstance(DateFormat.SHORT);
7. NumberFormat numFormat = dFormat.getNumberFormat();
8. System.out.println("格式为:" + numFormat);
9. }
10. }
输出:
格式为:java.text.DecimalFormat@3cd1a2f1