1. 序章 

このクイックチュートリアルでは、Kotlinでの日付の操作について学習します。

日付の作成、フォーマット、操作など、日付-関連の操作について検討します。

2. 日付の作成

Date オブジェクトを作成する最も簡単な方法は、 LocalDateparse()メソッドを使用することです。

var date = LocalDate.parse("2018-12-12")

parse()メソッドは、デフォルトで標準の日付形式 yyyy-MM-ddを使用します。

独自の形式を渡して、日付文字列を解析することもできます。

var formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy")
var date = LocalDate.parse("31-12-2018", formatter)

さらに制御が必要な場合は、LocalDateのof()メソッドを使用して年、日、月を明示的に指定できます。

var date = LocalDate.of(2018, 12, 31)

3. 日付のフォーマット

次に、日付オブジェクトをStringsにフォーマットして戻す方法を見てみましょう。

Kotlin でデフォルトのフォーマットを使用して日付をフォーマットするデフォルトの方法は、 toString()メソッドを呼び出すことです。

日付を作成しましょう

var date = LocalDate.parse("2018-12-31")

toStringを使用した場合のデフォルトの出力を見てください。

assertThat(date.toString()).isEqualTo("2018-12-31")

出力形式がyyyy-MM-ddであるため、これは読みやすいように見えますが、ユースケースによっては、日付をカスタム形式にフォーマットする必要がある場合があります。

日付をさまざまな形式にフォーマットするには、LocalDateのformat()メソッドを使用し、DateTimeFormatterを使用してカスタムフォーマットを提供します。

var formatter = DateTimeFormatter.ofPattern("dd-MMMM-yyyy")
var formattedDate = date.format(formatter)

これにより、適切にフォーマットされた日付が出力されます。

assertThat(formattedDate).isEqualTo("31-December-2018")

4. 日付コンポーネントの抽出

LocalDate は、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. 期間の操作

最後に、Kotlinでの期間の操作について見ていきましょう。

ピリオドは、タイムライン上の距離を表します。 Period のクラスファクトリメソッドを使用して、Periodを作成できます。

var period = Period.of(1, 2, 3)

これにより、1年、2か月、3日の期間が作成されます。

この期間を既存の日付に追加するには、 LocalDateplus()メソッドを使用します。

var date = LocalDate.of(2018, 6, 25)
var modifiedDate = date.plus(period)

これにより、指定された日付に1年、2か月、および3日が追加され、変更された日付が生成されます。

assertThat(modifiedDate).isEqualTo("2019-08-28")

同様に、指定された日付から期間を引くことができます。

var date = LocalDate.of(2018, 6, 25)
var modifiedDate = date.minus(period)

そして予想通り、変更日は次のようになります。

assertThat(modifiedDate).isEqualTo("2017-04-22")

また、期間を使用して2つの日付間の距離を表すこともできます。

正確に6か月離れた2つの日付があるとします。

var date1 = LocalDate.parse("2018-06-25")
var date2 = LocalDate.parse("2018-12-25")

これで、Periodの between メソッドを使用して、これら2つの日付間の距離を表すことができます。

var period = Period.between(date1, date2)

期間変数は、次のを生成します:

assertThat(period.toString()).isEqualTo("P6M")

P期間の略で、6Mは6か月を意味します。

6. 結論

この記事では、KotlinでDatesを操作する方法の基本を学びました。

さまざまな方法を使用して日付インスタンスを作成する方法と、日付オブジェクトを読み取り可能なテキストにフォーマットする方法を調べました。

さらに、 Date オブジェクトからコンポーネントを抽出し、最後にKotlinでPeriodsを操作する方法を検討しました。

このチュートリアルで使用されているコードは、GitHubから入手できます。