Kotlinで日付を扱う
1前書き
この簡単なチュートリアルでは、Kotlinで日付を操作する方法について学びます。
日付の作成、書式設定、操作など、____日付に関連する操作を検討します。
2日付を作成する
-
Date
オブジェクトを作成する最も簡単な方法は、
LocalDate
`s
parse()
メソッドを使用することです。
var date = LocalDate.parse("2018-12-12")
__parse()
methodはデフォルトでhttps://en.wikipedia.org/wiki/ISO
8601
yyyy-MM-dd
を使います。
-
日付文字列を解析するために独自のフォーマットを渡すこともできます。
var formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy")
var date = LocalDate.parse("31-12-2018", formatter)
さらに制御が必要な場合は、
LocalDate
s
of()
メソッドを使用して
year
、
day
、および
month
を明示的に指定できます。
var date = LocalDate.of(2018, 12, 31)
3日付のフォーマット
次に、日付オブジェクトを
string
にフォーマットし直す方法を見てみましょう。
-
_Kotlin
のデフォルトフォーマットを使ってDateをフォーマットするデフォルトの方法は
toString()メソッド_
。
日付を作成しましょう
var date = LocalDate.parse("2018-12-31")
そして
toString
を使ったデフォルトの出力を見てください:
assertThat(date.toString()).isEqualTo("2018-12-31")
これは出力フォーマットが
yyyy-MM-dd
であるため読みやすいように見えますが、やはりユースケースによってはカスタムフォーマットに日付をフォーマットする必要があるかもしれません。
-
日付をさまざまな形式にフォーマットするには、
LocalDate
s
__format()
method ** を使用し、それに
DateTimeFormatter__を使用してカスタム形式を指定できます。
var formatter = DateTimeFormatter.ofPattern("dd-MMMM-yyyy")
var formattedDate = date.format(formatter)
これはきれいにフォーマットされた日付を出力します:
assertThat(formattedDate).isEqualTo("31-December-2018")
4日付コンポーネントの抽出
-
__ LocalDate
は、
Dateから特定のコンポーネントを抽出するために使用できる多くのメソッドを提供します。
Date
から年、月、日を抽出するなど、これらのいくつかは非常に簡単です。
var date = LocalDate.parse("2018-12-31")
assertThat(date.year).isEqualTo(2018)
assertThat(date.month).isEqualTo(Month.DECEMBER)
assertThat(date.dayOfMonth).isEqualTo(31)
-
e
__ra
、d
ayOfTheWeek
、d
ayOfTheMonth
__のような他の情報も抽出できます。**
assertThat(date.era.toString()).isEqualTo("CE")
assertThat(date.dayOfWeek).isEqualTo(DayOfWeek.MONDAY)
assertThat(date.dayOfYear).isEqualTo(365)
5
Period
を使った作業
最後に、Kotlinの
Periods
を使った作業を見てみましょう。
-
期間はタイムライン上の距離を表します。
Period
のクラスファクトリメソッドを使用して
Period
を作成できます。
var period = Period.of(1, 2, 3)
これにより、1年、2ヶ月、3日の期間が作成されます。
この
Period
を既存の日付に追加するには、
LocalDate
‘s
__plus()
__メソッドを使用します。
var date = LocalDate.of(2018, 6, 25)
var modifiedDate = date.plus(period)
これは与えられた日付に1年、2ヶ月と3日を加えて、修正された日付を生成します。
assertThat(modifiedDate).isEqualTo("2019-08-28")
同様に、与えられた日付から
__Period
__を引くことができます。
var date = LocalDate.of(2018, 6, 25)
var modifiedDate = date.minus(period)
そして予想通り、修正日は次のようになります。
assertThat(modifiedDate).isEqualTo("2017-04-22")
また、期間を使用して2つの日付間の距離を表すこともできます。
2つの日付があり、正確に6か月離れているとします。
var date1 = LocalDate.parse("2018-06-25")
var date2 = LocalDate.parse("2018-12-25")
これで、Periodの
__ between
__メソッドを使用して、これら2つの日付間の距離を表すことができます。
var period = Period.between(date1, date2)
period
変数は次のような____を生成します。
assertThat(period.toString()).isEqualTo("P6M")
P
は
Period
を表し、
__
6Mは6か月を意味します。
6. 結論
この記事では、KotlinでDatesを操作する方法の基本を学びました。
さまざまなメソッドを使用して日付インスタンスを作成する方法と、日付オブジェクトを読みやすいテキストにフォーマットする方法について調べました。
さらに、
Date
オブジェクトからコンポーネントを抽出し、最後にKotlinで
Periods
を操作する方法を調べました。
このチュートリアルで使われているコードはhttps://github.com/eugenp/tutorials/tree/master/kotlin-libraries[over Github]から入手できます。