JAvaでのDateとDateFormatのフォーマット出力

9434 ワード

一、DateFormat   
java.text.DateFormat 

getDateInstanceを使用して、国/地域の標準日付フォーマットを取得します.他にもいくつかの静的工場法が提供されている.gettimeInstanceを使用して、国/地域の時間フォーマットを取得します.getDateTimeInstanceを使用して、日付と時刻のフォーマットを取得します.これらのファクトリメソッドには、SHORTからMEDIUMからLONG、FULLまで、さまざまなオプションを入力して結果の長さを制御できます.正確な結果は言語環境によって異なりますが、通常は次のようになります.
  • SHORTは完全に数字で、例えば12.13.52あるいは3:30 pm
  • MEDIUMはJan 12,1952
  • のように長い.
  • LONGはJanuary 12,1952または3:30:32 pm
  • のようにより長い
  • FULLは、Tuesday、April 12、1952 AD、または3:30:42 pm PSTなどの完全な指定です.

  • 必要に応じて、フォーマットにタイムゾーンを設定することもできます.フォーマットまたは解析により多くの制御を加えたい場合(またはユーザにより多くの制御を与える場合)、ファクトリメソッドから取得したDateFormatをSimpleDateFormatに強制的に変換してみてください.これは多くの国に適しています.ただし、特殊なフォーマットに遭遇しないようにtryコードブロックに入れることを覚えておいてください. 
          
    Date date = new Date();
    //    ,     2017-4-16
    DateFormat df1 = DateFormat.getDateInstance();
    System.out.println(df1.format(date));
    
    //        2017-4-16 12:43:37
    DateFormat df2 = DateFormat.getDateTimeInstance();
    System.out.println(df2.format(date));
    
    //         12:43:37
    DateFormat df3 = DateFormat.getTimeInstance();
    System.out.println(df3.format(date));
    
    //    , ,   ,  (    )
    //2017 4 16        12 43 37  CST
    DateFormat df4 = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
    System.out.println(df4.format(date));
    
    //    ,   ,  (    ) 
    //2017 4 16    12 43 37 
    DateFormat df5 = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
    System.out.println(df5.format(date));
    
    //    ,   ,  (    ) 
    //2017 4 16    12 43 37 
    DateFormat df5_1 = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.CHINA);
    System.out.println(df5_1.format(date));
    //    ,   ,  (    ) 17-4-16   12:43
    DateFormat df6 = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
    System.out.println(df6.format(date));
    
    //    ,  (    ) 2017-4-16 12:43:37 
    DateFormat df7 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
    System.out.println(df7.format(date));

    二、 SimpleDateFormat
    java.text.SimpleDateFormat

    次のパターンのアルファベットが定義されています(他のすべての文字'A''Z''a''z'が保持されます).
    文字
    日付または時刻要素
    表示
    G
    Eraフラグ
    Text AD y

    Year 1996 ; 96 M
    年中の月
    Month July ; Jul ; 07 w
    年間の週数
    Number 27 W
    月の週数
    Number 2 D
    年の日数
    Number 189 d
    月の日数
    Number 10 F
    月の中の曜日
    Number 2 E
    曜日の日数
    Text Tuesday ; Tue a
    Am/pmマーク
    Text PM H
    1日の時間(0~23)
    Number 0 k
    1日の時間(1~24)
    Number 24 K
    am/pmにおける時間数(0-11)
    Number 0 h
    am/pmにおける時間数(1-12)
    Number 12 m
    時間の分
    Number 30 s
    分の秒数
    Number 55 S
    ミリ秒数
    Number 978 z
    タイムゾーン
    General time zone Pacific Standard Time ; PST ; GMT-08:00 Z
    タイムゾーン
    RFC 822 time zone -0800
     
    インスタンスパラメータ
    日付モードと時刻モード
    結果"yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT "EEE, MMM d, ''yy" Wed, Jul 4, '01 "h:mm a" 12:08 PM "hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time "K:mm a, z" 0:08 PM, PDT "yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM "EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700 "yyMMddHHmmssZ" 010704120856-0700 "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700
     
    コード結果
    Date d = new Date();
    /* h 1-12    : 2017-04-16 01:01:22 */
    DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    String s = format1.format(d);
    System.out.println(s);
    /* H 0-23    :2017-04-16 13:01:22*/
    DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    s = format2.format(d);
    System.out.println(s);
    
    /* K 0-11    :2017-04-16 01:01:22 */
    DateFormat format3 = new SimpleDateFormat("yyyy-MM-dd KK:mm:ss");
    s = format3.format(d);
    System.out.println(s);
    
    /* k 1-24    : 2017-04-16 13:01:22 */
    DateFormat format4 = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
    s = format4.format(d);
    System.out.println(s);
    
    /*     : 20170416010122 */
    DateFormat format5 = new SimpleDateFormat("yyyyMMddhhmmss");
    s = format5.format(d);
    System.out.println(s);

     
    一般的な方法
    parse
    public Date parse(String texts)

    文字列のテキストを解析し、生成Date .
    このメソッドはテキストを解析しようとします.解析に成功した場合は、解析した日付を返します.更新されたposは、このメソッドが次回呼び出される開始点を示すために使用することができる.エラーが発生しnullを返します.
     
    指定者:
    クラス#クラス#DateFormatparse
    パラメータ:text-一部を解析すべきString .  
    戻り値:
    文字列から解析するDate .エラーが発生した場合はnullを返します.
    放出:NullPointerException-textはnullです.
    関連項目:DateFormat.setLenient(boolean)
     
    parse
    public Date parse(String text,
                      ParsePosition pos)

    文字列のテキストを解析し、生成Date .
    この方法は、posによって与えられたインデックスから始まるテキストを解析しようとする.解析に成功した場合は、posのインデックスを最後の文字の後のインデックスに更新し(文字列の最後までのすべての文字を解析する必要はありません)、解析の日付を返します.更新されたposは、このメソッドが次回呼び出される開始点を示すために使用することができる.エラーが発生した場合、posのインデックスは変更されず、posのエラーインデックスをエラーが発生した文字インデックスに設定しnullを返します.
     
    指定者:
    クラス#クラス#DateFormatparse
    パラメータ:text-一部を解析すべきString . pos-前述のインデックスおよびエラーインデックス情報を有するParsePositionオブジェクト.
    戻り値:
    文字列から解析するDate .エラーが発生した場合はnullを返します.
    放出:NullPointerException-textまたはposはnullです.
    関連項目:DateFormat.setLenient(boolean)
     
    format
    public final String format(Date date)

    Dateを日付/時間文字列にフォーマットします.
     
    パラメータ:date-時間文字列にフォーマットする時間値.
    戻り値:
    フォーマットされた時間文字列.