Java開発ノート(百五十二)Dateツールの時間フォーマット


Java開発では、「2020-07-08 22:59:48」などの現在の時間を文字列に変換することがよくあります.この場合、1949、2017などの4桁の年数を表すフォーマットツールSimpleDateFormatが使用されます.大文字のMM:2桁の月の数字を表して、例えば01は1月を表して、12は12月を表します.小文字のdd:2桁の日付の数字を表し、例えば08は当月8日、26は当月26日を表す.大文字のHH:24時間制の2桁の時間数を表し、19は夜7時を表す.小文字のmm:2桁の分の数字を表し、例えば30はある時の30分を表す.小文字のss:2桁の秒数を表します.「2020-07-08 22:59:48」という文字列スタイルに従って、対応する日付フォーマットは「yyyy-MM-dd HH:mm:ss」であり、日付時間を文字列に変換するコードは以下の通りである.
    //             
    public static String getNowDateTime() {
        //             
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //                            
        return sdf.format(new Date());
    }

上記のタイムスタンプには大文字と小文字が区別されていることに気づき、大文字と小文字の表現時間が異なることを意味します.たとえば、大文字のMMは2桁の月を表し、小文字のmmは2桁の分を表す.このほか、大文字のYYYY:同じ4桁の年数を表すが、日付が置かれている年ではなく、日付が置かれている週の最後の日(土曜日)がどの年にあるかを指定する、あまり一般的ではないタイムスタンプもあります.大文字のD:その年の1月1日から数えた数日目を表す.小文字のhh:12時間制の2桁の時間数を表し、06のように朝6時と夕方6時を同時に表すことができる.大文字のSSS:3ミリ秒の数字を表します.以上の4つのタイムスタンプは、特に大文字のYYYYに注意してください.他のマークはどうしても指定日の単位を取っているからですが、YYYは指定日から数えず、その日付が置かれている週を見つけて、その週の最後の日を見つけて、最後の日がどの年にあるかを見てみましょう.肝心な毎週の最終日はいったい何曜日ですか?中国人の習慣では、毎週最後の日は日曜日ですが、西洋人から見れば、毎週最後の日は土曜日なので、YYYYが探しているのはその土曜日ですね.とはいえ、実際に検証しなければなりません.まず2004年12月31日を見て、当日は金曜日で、その週の土曜日は2005年1月1日で、日曜日は2005年1月2日です.土曜日も日曜日も2005年に落ちるため、その週のYYYYは2005年に戻るはずです.そこで、次の年マーク検証コードを作成します.
    try {
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf1.parse("2004-12-29"); // 2004-12-31    ,2005-01-01    
        SimpleDateFormat sdf2 = new SimpleDateFormat("YYYY-MM-dd");
        String str = sdf2.format(date);
        System.out.println("str="+str);
    } catch (ParseException e) {
        e.printStackTrace();
    }

上のコードを実行すると、以下のような出力ログが表示され、やはり2004年末のYYYYは2005になりました.
    str=2005-12-29

2005年12月31日を見ると、当日は土曜日で、その週の日曜日は2006年1月1日です.その週の土曜日は2005年に落ち、日曜日は2006年に日没したため、その週のYYYYは2005年に戻るべきだ(毎週最後の日が土曜日であれば).この場合、年タグ検証コードの例は次のとおりです.
    try {
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf1.parse("2005-12-29"); // 2005-12-31    ,2006-01-01    
        SimpleDateFormat sdf2 = new SimpleDateFormat("YYYY-MM-dd");
        String str = sdf2.format(date);
        System.out.println("str="+str);
    } catch (ParseException e) {
        e.printStackTrace();
    }

上記のコードを実行すると、次のような出力ログが表示され、2005年末のYYYは2005年のままであることがわかり、Javaプログラミングでは土曜日が毎週の最終日であることが証明されました.
    str=2005-12-29

 
Javaテクノロジーの詳細については、「Java開発ノート(シーケンス)章ディレクトリ」を参照してください.