Kotlinで日付を扱う

Kotlinで日付を操作する

1. 前書き

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

日付の作成、書式設定、操作など、Date-関連の操作について検討します。

2. 日付の作成

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

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

parse() メソッドは、デフォルトでstandard date formatyyyy-MM-ddを使用します。

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

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

さらに制御が必要な場合は、explicitly specify the year, day and month using LocalDate‘s of() method:

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

3. 日付のフォーマット

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

Kotlin のデフォルト形式を使用して日付をフォーマットするデフォルトの方法は、toString() methodを呼び出します。

日付を作成しましょう

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

toStringを使用した場合のデフォルトの出力を確認します。

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

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

To format our date to different formats we can use 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)

era、dayOfTheWeek、dayOfTheMonthなどの他の情報を抽出することもできます。

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が作成されます。

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

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つの日付間の距離を表すことができます。

正確に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)

period変数は次の:を生成します

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

PPeriodを表し、6M は6か月を意味します。

6. 結論

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

さまざまな方法を使用して日付インスタンスを作成する方法と、日付オブジェクトを読みやすいテキストに戻す方法を検討しました。

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

このチュートリアルで使用されるコードは、over on Githubで使用できます。