2017-01-05 10 views
0

これまでに質問されたことが大変残念ですが、私は質問に答えても検索できませんでした。何も変更せずにJava 6でUTCのタイムゾーンオフセットでタイムスタンプを保存する方法は?

問題は次のとおりです。 「2017-01-05-04:44:43-06:00」という形式の文字列があるとします(yyyy-MM-dd-hh:mm: ss +/- UTC) 私の目標は、オフセットを含めてOracleデータベース内に保存することです(私はTIMESTAMP WITH TIME ZONEとして列を定義する必要があると理解しています)。

したがって、タイムスタンプをJavaの日付と時刻オブジェクトにオフセットでキャプチャするにはどうすればよいですか?私は時代をUTCに変換するつもりはないので、そのまま保存してDBに保存したい。

私たちはJava 6上にあるので、java.timeパッケージを使用することはできません。また、Joda Timeを使用することもできません。したがって、これらの外部のソリューションは本当に高く評価されます。

ありがとうございました。

+0

実際にJavaで日付/時刻を使用する必要がありますか、それともデータベースに渡すだけですか?その場合、文字列を渡してDBに変換できますか? –

+0

@AlexPoole Yeaそれは私の最後の手段でしょう。しかし、現在、このフィールドの周りにはJavaのDateとして定義されているコードがたくさんありますが、これをStringに変換すると多くのコードリファクタを実行することを避けるソリューションを探していました。それが理にかなってほしい。 –

答えて

1

Java 6および7のjava.time機能(java.timeはJava 8以降に組み込まれています)の多くのバックポートについては、ThreeTen-Backportプロジェクトを参照してください。

Joda-Timeプロジェクトは、現在メンテナンスされていますが、現在はメンテナンスされています。スポンサーは、java.timeクラスに移動するようアドバイスします。

標準のISO 8601フォーマットに準拠するために、入力文字列の中央にあるハイフンをTに置き換えてください。これらの標準形式は、デフォルトでjava.timeクラスで使用され、日付時刻値の文字列表現の解析および生成に使用されます。

OffsetDateTime odt = OffsetDateTime.parse("2017-01-05T04:44:43-06:00"); 

はい、質問はすべて重複しています。すべてのあなたの問題への既存の答えをスタックオーバーフローを検索してください:日時データを交換するオフセットから-UTC、OffsetDateTimeクラス

  • を含む文字列を解析java.timeの

    • バックポート、ThreeTen-バックポート
    • を特にデータベースとOracleでは、java.timeオブジェクトを直接交換するためのJDBC 4.2、またはjava.32との変換のために古いクラスに追加された新しいメソッドを呼び出してjava.sql.Timestampに変換するか、Java-8以前の変換でTimestampに変換するエポック数からのカウント。
    • 古いレガシーの日時クラスがどれほど悪いかを学んでください。あなたのプロジェクトにjava.timeバックポートライブラリを追加するのは間違いありません。

    ヒント:Stack OverflowのWebサイトからは検索しないでください。 Answers内で検索したいときに、検索エンジンは質問に偏っています。 DuckDuckGo、Google、またはBingでsite:stackoverflow.comタグを使用してください。

  • 関連する問題