2016-12-10 15 views
-1

私はSQLタイムスタンプ文字列を持っています。 g。Java:Datetime to Dateオブジェクト

String timestamp = 2016-12-11 14:26:35 

私は今日日との違いを取得したい、と私はこれを行うに考える

11.12.206 14:26:35 

形式の文字列は、私は、オブジェクトのミリ秒を取得して解析する必要がそれらを日付/カレンダーオブジェクトに追加しますか?

これを行うにはどうすればいいですか?

+0

Java 8を使用していますか?最高の答えはこれに依存するかもしれません。 Java 1.7では、特に時間間隔を求めたい場合に、より複雑な時間計算にJoda Timeを使用する傾向があります。 Java 8には組み込みのオプションがあります。たぶんhttp://stackoverflow.com/questions/1555262/calculating-the-difference-between-two-java-date-instances –

+0

@DanArmstrongはい一見することができます。 Timestamp文字列からDateオブジェクトを取得するにはどうすればよいですか? – writzlpfrimpft

+0

「タイムゾーンなしの2番目の解決例の例」については、http://stackoverflow.com/questions/1071800/how-to-use-joda-time-with-java-sql-timestampを参照してください。 「DateTimeFormat.forPattern」があり、必要な場所に移動できます。 –

答えて

0

あなたの質問を理解したら、SQLタイムスタンプをオブジェクトデータに変換するだけで済みます。それはSimpleDateFormatで行うことができます。

あなたはジョダ、時間とともにeasilly 2つの日付の間の差を作ることができ、その後ここhttps://www.mkyong.com/java/how-to-convert-string-to-date-java/

参照してください。

乾杯

0

これらの問題は、スタックオーバーフローに多く回、既に議論されています。あなたのものは他の多くの質問と重複しています。したがって、詳細を検索してください。下に表示されているクラス名と、elapsedなどの単語を検索します。

ここに簡単な答えがあります。

ISO 8601

Tと真ん中にスペースを置き換えることにより、SQL形式から標準ISO 8601形式に入力文字列を変換します。

String input = "2016-12-11 14:26:35".replace(" " , "T"); 
この文字列として LocalDateTimeとして

LocalDateTime

解析は、任意の時間帯の表示またはオフセットから-UTCを欠いています。

LocalDateTime ldt = LocalDateTime.parse(input); 

ZonedDateTime

この文字列の後ろの意味するものとして意図されたタイムゾーンを適用します。オークランド、パリ、モントリオの午後に2つの意味がありましたか?

ZoneId z = ZoneId.of("America/Montreal"); 
ZonedDateTime zdtThen = ldt.atZone(z); 

現在の時刻を取得します。繰り返しますが、タイムゾーンは非常に重要です。無視されたり、離れたくない。

ZonedDateTime zdtNow = ZonedDateTime.now(z); 

違いは?

「差をつける」に関しては、その意味を説明しません。

時間帯を1日として表現する場合は、Periodを使用してください。

Period p = Period.between(zdtThen.toLocalDate() , zdtNow.toLocalDate()); 

時間 - 分 - 秒を経過させる場合は、Durationを使用します。

Duration d = Duration.between(zdtThen , zdtNow); 

、時間内の点の対として追跡ThreeTen-Extraライブラリを取得し、Intervalクラスを使用します。

Interval interval = Interval.of(zdtThen.toInstant() , zdtNow.toInstant()); 
関連する問題