前提・実現したいこと
Android StudioでKotlinを使ってアプリを制作しております。
Calendarを使用して
日付の計算をしていたところ、
2018年3月30日の次の日が
2018年4月1日になってしまいます。
3月30日の次の日なので、3月31日になると思うのですが、
どうして4月1日になってしまうのかわからず、困っております。
発生している問題・エラーメッセージ
Calendarに、2018年3月29日を設定。
1日後を計算すると、
2018年3月30日と表示される。
次に、Calendarに、2018年3月30日を設定。
1日後を計算すると、
2018年4月1日と表示されてしまう。
また、Calendarに、2018年3月31日を設定。
1日後を計算すると、
2018年4月2日と表示されてしまう。
Kotlin
1 var myCalendar01 = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault()) 2 if (myCalendar01 != null) { 3 4 myCalendar01.clear() 5 myCalendar01.set(2018, 3, 29) 6 myCalendar01.add(Calendar.DATE, 1) 7 Log.i("date1", myCalendar01.get(Calendar.YEAR).toString() + "年" + myCalendar01.get(Calendar.MONTH).toString() + "月" + myCalendar01.get(Calendar.DATE).toString() + "日") 8 9 myCalendar01.clear() 10 myCalendar01.set(2018, 3, 30) 11 myCalendar01.add(Calendar.DATE, 1) 12 Log.i("date2", myCalendar01.get(Calendar.YEAR).toString() + "年" + myCalendar01.get(Calendar.MONTH).toString() + "月" + myCalendar01.get(Calendar.DATE).toString() + "日") 13 14 myCalendar01.clear() 15 myCalendar01.set(2018, 3, 31) 16 myCalendar01.add(Calendar.DATE, 1) 17 Log.i("date3", myCalendar01.get(Calendar.YEAR).toString() + "年" + myCalendar01.get(Calendar.MONTH).toString() + "月" + myCalendar01.get(Calendar.DATE).toString() + "日") 18 }
<表示されるLog>
I/date1: 2018年3月30日
I/date2: 2018年4月1日
I/date3: 2018年4月2日
試したこと
myCalendar01.isLenient = trueをfalseにしたり、
myCalendar01.clear()を追加または削除したり、
TimeZoneを"Asia/Tokyo", LocaleをJAPANにする等してみたのですが、
変化はありませんでした。
補足情報(FW/ツールのバージョンなど)
MacOS High Sierraにて制作
Android Studio 3.0.1
1.2.51-release-Studio3.1-1 of the Kotlin pluginを使用
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/14 13:13 編集