Как отформатировать Ints из datePicker в строку даты - PullRequest
0 голосов
/ 05 мая 2020

Я могу получить значения даты из средства выбора даты:

override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) {
    Log.i("onDateSet", year.toString())
    Log.i("onDateSet", month.toString())
    Log.i("onDateSet", dayOfMonth.toString())
}

Как мне отформатировать эти целые числа в строку даты, например: 2020-05-05

И я увидел, что месяц всегда возвращается один месяц go, если сегодня 5-й месяц, возвращается 4-й месяц. Это ошибка или я просто понимаю, как это работает, и мне нужно добавлять 1 к каждому месяцу, который я получаю из средства выбора даты?

Ответы [ 2 ]

3 голосов
/ 05 мая 2020

do c говорит, что month int: the selected month (0-11 for compatibility with Calendar#MONTH), так что да, это желаемое поведение, и чтобы отформатировать его до удобочитаемого человеком, вы должны добавить 1, я полагаю.

А для форматирования строки вы должны вероятно, вручную объедините данные, которые у вас есть

val date = "$year-${month+1}-$day"

(самый быстрый способ для меня, но вы можете выбрать более красивый)

В качестве альтернативы вы можете сделать:

val date = LocalDate(year, monthOfYear + 1, dayOfMonth).toString("yyyy-MM-dd")
1 голос
/ 05 мая 2020

Как упоминалось в классе AndroidSDK Date ,

Месяц представлен целым числом от 0 до 11; 0 - январь, 1 - февраль и так далее; таким образом, 11 - это декабрь.

Час представлен целым числом от 0 до 23. Таким образом, час с полуночи до 1 часа ночи - это час 0, а час с полудня до 13 часов - это час 12.

Минута обычно представляется целым числом от 0 до 59.

Секунда представляется целым числом от 0 до 61; значения 60 и 61 встречаются только для дополнительных секунд.

Дата и год представлены обычным образом, в то время как упомянутые выше вещи представлены с их соответствующим правилом.

Следовательно, если в мае он вернет 4, в июне - 5 и т. д.

ПРИМЕЧАНИЕ. Хотя такое поведение может показаться странным, оно согласуется с java .util.Calendar class (хотя это не соответствует joda.time.DateTime).

...