sql >> データベース >  >> RDS >> Mysql

EEE MMM dd HH:mm:ssZZZyyyy日付形式からjava.sql.Dateへ

        LocalDate date4 = ZonedDateTime
                .parse(date, DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH))
                .toLocalDate();
        java.sql.Date date5 = java.sql.Date.valueOf(date4);
    

    java.timeで最新のクラスを使用しています パッケージ。コードが単純であるだけでなく、新しいクラスの流暢な文体に慣れれば、コードも明確になります。

    100%最新の状態にしたい場合は、最新のMySQLJDBCドライバーがLocalDateを受け入れないかどうかも確認する必要があります。 java.sql.Dateに変換せずに直接 。すべきです。

    注意すべきいくつかの詳細

    • 制御できないコンピューターでコードを実行する必要がある場合は、常にフォーマッターにロケールを指定してください。そうしないと、英語を話さないロケールのコンピューターで日付文字列を解析できません。 Locale.ROOTを使用できます ロケールニュートラルロケールの場合(英語を話します)。
    • 可能であれば、3文字のタイムゾーンの省略形は避けてください。多くはあいまいです。 EETは、現在EEST(夏時間)に使用されている場所があるため、実際には半分のタイムゾーンにすぎません。 Europe/Bucharestのような長いタイムゾーンIDを使用することをお勧めします または+02:00のようなUTCからのオフセット 。

    これらのポイントは、DateTimeFormatterを使用するかどうかに関係なく有効です。 またはSimpleDateFormat

    推奨される新しいクラスに進むことができない、またはしたくない場合、コードの修正は次のとおりです。

        SimpleDateFormat formatnow 
                = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH); 
        SimpleDateFormat formatneeded = new SimpleDateFormat("yyyy-MM-dd");
    

    小文字のzzzを使用しています これは3文字のタイムゾーン名と一致するように文書化されているため、大文字のZZZ も動作します。ロケールを追加しました。そしておそらく最も重要なのは、必要な形式でYYYYを変更したことです。 (週ベースの年)からyyyy (暦年)およびDD (年の日)からdd (月の日)。これらの文字はすべて、ドキュメント にあります。 。



    1. DBMSとは何ですか? –データベース管理システムの包括的なガイド

    2. どのデータマスキング機能を使用する必要がありますか?

    3. cPanelでMySQLデータベースユーザーを削除する方法

    4. Android-すでに閉じられているオブジェクトを再度開こうとします:loaderManagerを使用してSQLiteQuery