Java 自定義日期格式模式

2018-03-12 15:41 更新

Java日期時間 - 自定義日期格式模式


下面的列表顯示了我們可以用來創(chuàng)建自定義數(shù)據(jù)格式模式的格式符號。

  • G
    時代
    例如:
        G     AD
        GGGG  Anno Domini
        GGGGG A    
        
  • u

    它可以是正數(shù)或負(fù)數(shù)。年是正數(shù)在一個時代開始日期之后。年份是時代開始日期之前的負(fù)數(shù)。2014年AD是2014年和2014年BC是-2014年。
    例如:
            u/uuu/uuuu 2014
            uu         12
            uuuuu      02014
        
  • y
    年代
    它計算從時代開始日期向前或向后的年份。它總是一個正數(shù)。2014年AD是2014年和2014年BC是2015年。在共同時代,0年是1 BC。
    例如:
        y/yyy/yyyy 2014
        yy         12
        yyyyy      02014
        
  • D
    一年中的(1 -366)
    例如:
    D 150
  • M/L
    月份
    例如:
    M    5
    MM   05
    MMM  Jul
    MMMM July
    
  • d
    日期
  • 例如:
    d    21
    dd   01
    ddd 001
    ddd 029
    
  • Q/q
    每年的季度
    例如:
        Q      3
        QQ     03
        QQQ    Q3
        QQQQ   3rd quarter
  • Y
    每周一年
    例如:
        Y        2014
        YY       12
        YYY/YYYY 2014    
        
  • w
    周為基礎(chǔ)的年度
    例如:
        w 31
        
  • W
    周月
    例如:
    W 2
  • E
  • 星期中的一天
    例如:
        E     7
        EE    07
        EEE   Sun
        EEEEE Sunday
        
  • F
    每月的星期幾
    例如:
    F 1
  • a
    上午/下午
    例如:
    a AM
  • h
    時鐘小時AM/PM(1-12)
    例如:
    h 2
  • K
    上午/下午時間(0-11)
    例如:
    K 3
  • k
    時鐘小時AM/PM(1-24)
    例如:
    k 7
  • H
    時段(0-23)
    例如:
        H 7
        HH 07
        
  • m
    分鐘
    例如:
    mm 21
  • s
    秒鐘
    例如:
    ss 12
  • S
    第二部分
    例如:
    SSSSSSSSS 000006789
  • A
    毫秒
    例如:
    A 12014012
  • n
    第二個納秒
    例如:
    n 789
  • N
    納秒
    例如:
    N 12014012001289
  • V
    時區(qū)ID
    例如:
    VV   America/Chicago
  • z
    時區(qū)名稱
    例如:
    z   CDT
  • Z
    區(qū)域偏移
    例如:
        Z      -0500
        ZZ     -0500
        ZZZ    -05:00
        ZZZZ   GMT-05:00
        
  • O
    局部區(qū)偏移
    例如:
    O   GMT-5
  • X
    區(qū)域偏移
    例如:
            X       +09
            XX      +0930 
            XXX     +09:30
            XXX     -05:00
            XXXX    +093045
            XXXXX   +08:30:45
        
  • x
    與X相同,除了它為區(qū)域偏移零而不是“Z”打印“+00”。
    例如:
    xx -0500
  • p
    用空格填充模式。p的數(shù)量決定了輸出的寬度。
    例如:
        mm      30
        pppmm " 30"
    
  • "
    文本轉(zhuǎn)義。
    單引號內(nèi)的文本直接輸出。
    要輸出單個報價,請使用兩個連續(xù)的單引號。
    例如:
    "Hello" MMMM     Hello July
  • ""
    單引號
    例如:
    """Hello""" MMMM             "Hello" July
  • []
    符號[和]表示可選部分。 只有當(dāng)信息可用于所有元素時,才會輸出包含在可選節(jié)中的模式。
  • #, {, }
    保留供將來使用。

  • 例子

    import java.time.LocalDate;
    import java.time.Month;
    import java.time.format.DateTimeFormatter;
    import java.time.temporal.Temporal;
    import java.util.Locale;
    
    public class Main {
    
      public static void main(String[] args) {
        LocalDate ld = LocalDate.of(2014, Month.JUNE, 30);
        format(ld, "M/d/yyyy");
        format(ld, "MM/dd/yyyy");
        format(ld, "MMM   dd,   yyyy");
        format(ld, "MMMM   dd,   yyyy");
        format(ld, "EEEE, MMMM   dd,   yyyy");
        format(ld, ""Month" q  "in" QQQ");
      }
    
      public static void format(Temporal co, String pattern) {
        DateTimeFormatter fmt = DateTimeFormatter.ofPattern(pattern);
        String str = fmt.format(co);
        System.out.println(pattern + ": " + str);
      }
    }
    

    上面的代碼生成以下結(jié)果。

    使用區(qū)域設(shè)置的自定義日期格式

    我們可以使用DateTimeFormatter類的Ptern()方法創(chuàng)建一個具有指定格式模式和語言環(huán)境的DateTimeFormatter對象。

    static DateTimeFormatter ofPattern(String pattern)
    static DateTimeFormatter ofPattern(String pattern, Locale   locale)
    

    以下代碼顯示如何創(chuàng)建兩個格式化程序,以便在默認(rèn)語言環(huán)境和德語語言環(huán)境中以“Month day,Year”格式設(shè)置日期格式。

    DateTimeFormatter fmt1  = DateTimeFormatter.ofPattern("MMMM dd,   yyyy");
    
    DateTimeFormatter fmt2  = DateTimeFormatter.ofPattern("MMMM dd,   yyyy", Locale.GERMAN);
    

    DateTimeFormatter 類withLocale()方法從同一模式返回指定區(qū)域設(shè)置的DateTimeFormatter對象。

    DateTimeFormatter fmt2 = fmt1.withLocale(Locale.GERMAN);

    DateTimeFormatter 類中的 getLocale()方法返回當(dāng)前格式化程序的語言環(huán)境。

    例2

    import java.time.LocalDate;
    import java.time.LocalTime;
    import java.time.Month;
    import java.time.ZoneId;
    import java.time.ZonedDateTime;
    import java.time.format.DateTimeFormatter;
    import java.time.temporal.Temporal;
    import java.util.Locale;
    
    public class Main {
    
      public static void main(String[] args) {
        LocalTime lt = LocalTime.of(16, 30, 5, 78899);
        format(lt, "HH:mm:ss");
        format(lt, "KK:mm:ss a");
        format(lt, "[MM-dd-yyyy][" at" HH:mm:ss]");
    
        ZoneId usCentral = ZoneId.of("America/Chicago");
        ZonedDateTime zdt = ZonedDateTime.of(LocalDate.now(), lt, usCentral);
        format(zdt, "MM/dd/yyyy HH:mm:ssXXX");
        format(zdt, "MM/dd/yyyy VV");
        format(zdt, "[MM-dd-yyyy][" at" HH:mm:ss]");
    
      }
    
      public static void format(Temporal co, String pattern) {
        DateTimeFormatter fmt = DateTimeFormatter.ofPattern(pattern, Locale.US);
        String str = fmt.format(co);
        System.out.println(pattern + ": " + str);
      }
    }
    

    上面的代碼生成以下結(jié)果。

    自定義日期格式與可選

    定義自定義日期時間格式時我們可以使用符號 [] 以標(biāo)記可選部分。

    只有當(dāng)信息可用于所有元素時,才會輸出包含在可選節(jié)中的模式。

    以下代碼顯示如何使用可選格式。

    import java.time.LocalDate;
    import java.time.LocalDateTime;
    import java.time.LocalTime;
    import java.time.Month;
    import java.time.format.DateTimeFormatter;
    
    public class Main {
    
      public static void main(String[] args) {
        String pattern = "MM/dd/yyyy[ "at" HH:mm:ss]";
        DateTimeFormatter fmt = DateTimeFormatter.ofPattern(pattern);
    
        LocalDate ld = LocalDate.of(2014, Month.JUNE, 30);
        LocalTime lt = LocalTime.of(17, 30, 12);
        LocalDateTime ldt = LocalDateTime.of(ld, lt);
    
        String str1 = fmt.format(ld);
        System.out.println(str1);
    
        String str2 = fmt.format(ldt);
    
        System.out.println(str2);
      }
    }
    

    上面的代碼生成以下結(jié)果。

    Java DateTimeFormatterBuilder

    我們可以從 DateTimeFormatterBuilder 創(chuàng)建自定義日期時間格式。

    以下代碼構(gòu)建一個 DateTimeFormatter 對象以格式化日期格式,例如“YEAR中的新年度在WEEK_DAY”:

    import java.time.LocalDate;
    import java.time.Month;
    import java.time.format.DateTimeFormatter;
    import java.time.format.DateTimeFormatterBuilder;
    import java.time.format.TextStyle;
    import java.time.temporal.ChronoField;
    
    public class Main {
    
      public static void main(String[] args) {
        DateTimeFormatter formatter = new DateTimeFormatterBuilder()
        .appendLiteral("New Year in ")
        .appendValue(ChronoField.YEAR)
        .appendLiteral(" is  on  ")
        .appendText(ChronoField.DAY_OF_WEEK,TextStyle.FULL_STANDALONE)
        .toFormatter(); 
        LocalDate ld  = LocalDate.of(2014, Month.JANUARY, 1); 
        String str = ld.format(formatter); 
        System.out.println(str);
    
      }
    }
    

    上面的代碼生成以下結(jié)果。

    例3

    我們可以使用DateTimeFormatterBuilder中的模式創(chuàng)建相同的自定義格式化程序。

    import java.time.LocalDate;
    import java.time.Month;
    import java.time.format.DateTimeFormatter;
    
    public class Main {
    
      public static void main(String[] args) {
        LocalDate ld  = LocalDate.of(2014,Month.JANUARY,1);
        String pattern = ""New Year in"  yyyy  "is on" EEEE"; 
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); 
        String str = ld.format(formatter);
        System.out.println(str); 
    
      }
    }
    

    上面的代碼生成以下結(jié)果。

    以上內(nèi)容是否對您有幫助:
    在線筆記
    App下載
    App下載

    掃描二維碼

    下載編程獅App

    公眾號
    微信公眾號

    編程獅公眾號