問題タブ [unparseable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - java から mysql へ。文字列パラメータからタイムスタンプに変換する必要があります
このデータを bbdd mysql に保存する必要があるため、文字列をタイムスタンプにパーサーしようとしています。
アプリを実行すると、次のキャッチ メッセージが表示されます。
bbdd を保存するためのタイムスタンプへのエラー パーサー文字列。解析不能な日付: "2018-10-17T22:37:10.000+0000"
誰でも私を助けることができますか?
java - 日付の DateFormat 解析の動作が Java 8 から Java 9 に変更されました。関連する環境設定はありますか?
Java 12 で同じコードを実行する新しい環境を構築しようとすると、Java コードをコンパイルして Java 5 で実行する従来の Web アプリケーションがあり、日付の書式設定の問題に遭遇しました。Java 5、7、8、9、10、11、12 でこれをテストしましたが、Java 9 以降を使用するとコードの動作が変わります。
Web アプリケーションの Java ソース コードを変更するオプションがありません。
問題は、java.text.DateFormat と parse(String) メソッドを使用することです。
この小さなテスト アプリケーションは問題を示しています。
Java 5 でコードをコンパイルし、異なるバージョンで同じクラスを実行しました。
これを Java 5 から 8 で実行すると、出力は次のようになります。
Java 9 以降で実行すると、出力は次のようになります。
この DateFormat 解析メソッドの既定の動作の変更により、Web アプリケーションでエラーが発生します。
誰かがこれを見て、異なるJavaバージョンで一貫性を保つためにデフォルトを取得する方法を考え出しましたか?
OS環境変数がJavaシステムプロパティに渡されることに関係しているのではないかと思いました。変更を引き起こすことに最も近いのは、「user.country」Javaプロパティを変更することでした。しかし、DD-MMM-YYYY 形式から解析された日付を与える設定が見つかりませんでした。
覚えておいてください - 私は Java ソース コードを変更できません - OS 環境プロパティと Java システム プロパティしか変更できません。
解決
関連記事を提供する以下の回答を通じて提供されます。
Java 11 および 12 でこれをテストしましたが、動作します。次のコマンドライン オプションを java コマンドに追加します。
そのコマンドライン オプションを指定して Java 11 または 12 でテスト アプリケーションを実行すると、コマンドライン オプションを指定せずに Java 8 以下で実行した場合と同じ出力が得られます。