2016-08-11 2 views
0

私はScalaで 'yyyy-MM-dd'という形式の2つの日付があり、どちらも月の最後の日(2015-05-31)です。その間に。私は次のコードを持っていますが、月の違いを見つけるのは難しいことではありません。スカラの2つの日付の月の差

val format = new java.text.SimpleDateFormat("yyyy-MM-dd")   
val diff = format.parse(date1).getTime - format.parse(date2).getTime 

val days = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS) 

もっと良い提案がありますか?

答えて

1

JodaTimeに特別な方法があります:

monthsBetween

は、指定された2つの日付時刻の間に全体の月数を表す月数を作成します。このメソッドは、その間に発生する夏時間の変更を中核的に処理します。

+0

どうすればScalaで正確に使用できますか? –

+0

FYI、[Joda-Time](http://www.joda.org/joda-time/)はメンテナンスモードです。このプロジェクトでは、[java.time](http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html)への移行が推奨されています。 –

+0

@ H.Z。 JodaTimeはJavaライブラリであるため、Scalaで使用できます。 – leshkin

2

Java 8以降を使用している場合は、java.timeパッケージの新しい日付と時刻APIを使用できます。

まず、あなたは2つのLocalDateオブジェクトの作成:

import java.time._ 
val s1 = LocalDate.parse("2012-05-31") 
val s2 = LocalDate.parse(otherDate) 

を次に2つのオプションがあります。

import java.time.temporal._ 
ChronoUnit.MONTHS.between(s1, s2) // the answer you are looking for 

または時間の期間を表すために使用されPeriodオブジェクトを作成:最初のオプション、直接ChronoUnitオブジェクトを使用します。

val p = Period.between(s1, s2) 
p.getMonths() // returns the number of months between the two dates 

Periodクラスでは、2つの日付の間の期間に関する詳細な情報を得ることが可能にする、などgetDays()などの他の方法を持っています。

関連する問題