ホームページ  >  記事  >  データベース  >  SimpleDateFormat.parse が予期しない出力形式を生成するのはなぜですか?

SimpleDateFormat.parse が予期しない出力形式を生成するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-01 03:12:02235ブラウズ

Why Does SimpleDateFormat.parse Yield an Unexpected Output Format?

SimpleDateFormatter.parse が予期しない出力形式を与える

コード内で、SimpleDateFormatter.format と SimpleDateFormatter.parse が生成する不一致が発生しました。異なる出力形式。この動作の背後にある理由を詳しく見てみましょう。

SimpleDateFormatter クラスでは、日付を正しく操作するために、日付の書式設定とタイム ゾーン情報の両方が必要です。あなたの場合、指定した形式は「dd/MM/yyyy hh:mm:ss a」です (例: 23/05/2018 03:30:00 PM)。ただし、同じ形式を使用して書式設定された日付を解析すると、AM/PM の指定を表す形式内の「a」により、IST (インド標準時) タイム ゾーンが認識されます。

これこれは、SimpleDateFormatter.parse が IST タイム ゾーンを使用して日付を解釈し、観察したタイムスタンプが「Wed May 23 15:30:00 IST 2018」となることを意味します。この形式は、タイム ゾーン情報が含まれているため、最初に指定した形式とは異なります。

この問題を解決するには、次の解決策を検討してください。

  • java.time の形式を使用します。 LocalDateTime: 受け入れられた回答で提案されているように、java.time API の LocalDateTime を利用すると、よりクリーンで現代的なアプローチが提供されます。このオブジェクトは、タイムゾーンの偏りのない日付と時刻の情報をカプセル化します。エポック タイムスタンプを LocalDateTime に変換し、解析の問題を引き起こすことなく MySQL データベースに直接挿入できます。
  • タイム ゾーンを明示的に設定します: あるいは、SimpleDateFormatter を使用したい場合は、次のことを確認してください。解析を適用する前にタイムゾーンを明示的に設定する必要があります。タイム ゾーンを事前に指定することで、日付と時刻の値の解釈を制御できます。

要約すると、SimpleDateFormatter.format と SimpleDateFormatter.parse の間の不一致は、タイム ゾーンの考慮事項によって発生します。 java.time API を活用するか、SimpleDateFormatter でタイムゾーンを明示的に管理することにより、これらの書式の不一致を回避し、一貫した日付処理を保証できます。

以上がSimpleDateFormat.parse が予期しない出力形式を生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。