日期格式化類

DateFormat格式化日期

  • getDateInstance:返回一個日期格式器,它格式化的字符串只有日期,沒有時間。該方法可以傳入多個參數,用於指定日期樣式和Locale等參數。如果不指定這些參數,則使用默認參數。
  • getTimeInstance:返回一個時間格式器,它格式化的字符串只有時間,沒有日期。該方法可以傳入多個參數,用於指定時間樣式和Locale等參數。如果不指定這些參數,則使用默認參數。
  • getDateTimeInstance:返回一個日期、時間格式器,它格式化的字符串既有日期,又有時間。該方法可以傳入多個參數,用於指定日期樣式、時間樣式和Locale等參數。如果不指定這些參數,則使用默認參數。

簡單的DateFormat格式化編碼

時間模式字符串用來指定時間格式。在此模式中,所有的ASCII字母被保留爲模式字母,定義如下:

字母

描述

示例

G

紀元標記

AD

y

四位年份

2019

M

月份

July or 07

d

一個月的日期

10

h

A.M./P.M. (1~12)格式小時

12

H

一天中的小時 (0~23)

22

m

分鐘數

30

s

秒數

55

S

微妙數

234

E

星期幾

Tuesday

D

一年中的日子

360

F

一個月中第幾周的周幾

2 (second Wed. in July)

w

一年中第幾周

40

W

一個月中第幾周

1

a

A.M./P.M. 標記

PM

k

一天中的小時(1~24)

24

K

A.M./P.M. (0~11)格式小時

10

z

時區

Eastern Standard Time

'

文字定界符

Delimiter

"

單引號

`

SimpleDateFormat格式化日期

SimpleDateFormat是DateFormat的子類,它可以非常靈活地格式化Date,也可用於解析各種格式的日期字符串。創建SimpleDateFormat對象時需要傳入一個pattern字符串,這個pattern不是正則表達式,而是一個日期模板字符串。

import java.util.*;
import java.text.*;
public class DateFormatDemo{
    public static void main(String args[]) {
        // 初始化 Date 對象
        Date date = new Date();
        SimpleDateFormat ft = new SimpleDateFormat("E yyyy-MM-dd 'at' hh:mm:ss a zzz");
        System.out.println("Current Date: " + ft.format(date));
    }
}

以上實例編譯運行結果如下:

Current Date: 星期五 2019-11-22 at 09:28:10 下午 CST

使用printf格式化日期

printf方法可以很輕鬆地格式化時間和日期。使用兩個字母格式,它以t開頭並且以下面表格中的一個字母結尾。例如:

public class DateFormatDemo{
    public static void main(String args[]) {
        // 初始化 Date 對象
        Date date = new Date();
        String str = String.format("Current Date/Time : %tc", date );
        System.out.printf(str);
    }

以上實例編譯運行結果如下:

Current Date/Time : 星期五 十一月 22 21:40:38 CST 2019

如果你需要重複提供日期,那麼利用這種方式來格式化它的每一部分就有點複雜了。因此,可以利用一個格式化字符串指出要被格式化的參數的索引。

索引必須緊跟在%後面,而且必須以$結束。例如:

public class DateFormatDemo{
   public static void main(String args[]) {
       // 初始化 Date 對象
       Date date = new Date();
       System.out.printf("%1$s %2$tB %2$td, %2$tY",  "Due date:", date);
   }
}

以上實例編譯運行結果如下:

Due date: 十一月 22, 2019

或者,你可以使用<標誌。它表明先前被格式化的參數要被再次使用。例如:

public class DateFormatDemo{

   public static void main(String args[]) {
       // 初始化 Date 對象
       Date date = new Date();       
       // 顯示格式化時間
       System.out.printf("%s %tB %<te, %<tY", "Due date:", date);
   }
} 

以上實例編譯運行結果如下:

Due date: 十一月 22, 2019

日期和時間轉換字符

字符

描述

例子

c

完整的日期和時間

Mon May 04 09:51:52 CDT 2009

F

ISO 8601 格式日期

2004-02-09

D

U.S. 格式日期 (月/日/年)

02/09/2004

T

24小時時間

18:05:19

r

12小時時間

06:05:19 pm

R

24小時時間,不包含秒

18:05

Y

4位年份(包含前導0)

2004

y

年份後2位(包含前導0)

04

C

年份前2位(包含前導0)

20

B

月份全稱

February

b

月份簡稱

Feb

n

2位月份(包含前導0)

02

d

2位日子(包含前導0)

03

e

2位日子(不包含前導0)

9

A

星期全稱

Monday

a

星期簡稱

Mon

j

3位年份(包含前導0)

069

H

2位小時(包含前導0), 00 到 23

18

k

2位小時(不包含前導0), 0 到 23

18

I

2位小時(包含前導0), 01 到 12

06

l

2位小時(不包含前導0), 1 到 12

6

M

2位分鐘(包含前導0)

05

S

2位秒數(包含前導0)

19

L

3位毫秒(包含前導0)

047

N

9位納秒(包含前導0)

047000000

P

大寫上下午標誌

PM

p

小寫上下午標誌

pm

z

從GMT的RFC 822數字偏移

-0800

Z

時區

PST

s

自 1970-01-01 00:00:00 GMT的秒數

1078884319

Q

自 1970-01-01 00:00:00 GMT的毫妙

1078884319047

還有其他有用的日期和時間相關的類。對於更多的細節,你可以參考到Java標準文檔。

解析字符串爲時間

SimpleDateFormat 類有一些附加的方法,特別是parse(),它試圖按照給定的SimpleDateFormat 對象的格式化存儲來解析字符串。例如:

public class DateFormatDemo{

   public static void main(String args[]) {
      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); 
      String input ="2019-11-23";
      Date t; 
      try { 
          t = ft.parse(input); 
          System.out.println(t); 
      } catch (ParseException e) { 
          System.out.println("Unparseable using " + ft); 
      }
   }
}

以上實例編譯運行結果如下:

Sat Nov 23 00:00:00 CST 2019

 

小弟才疏學淺,如有不當之處,還請多多指教

參考:

https://blog.csdn.net/chenxihua1/article/details/82490901

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章