Необходимо работа с датами, например такие операции как:
- определить количество недель охватывающих 2 даты (например 03.11.2019 и 04.11.2019 - 2 недели)
- Дату среды на 15 неделе от даты и т.д.
Не подскажите, а то самому не охота реализовывать. На python использовал relativedelta, может есть что-то подобное на Kotlin. Будет применяться на Android
Попробовал Joda Time, как советовали.
fun differentDatesInWeek(startDate: DateTime, endDate: DateTime) : Int{
return Weeks.weeksBetween(startDate, endDate).weeks
}
Собственно вопрос, почему при выборе дат 03.11.2019 и 04.11.2019 он показывает 0, а не 2 (или хотя бы 1)?
Или вот так. Решение 2:
var start = DateTime.parse("2019-11-08")
var end = DateTime.parse("2019-11-09")
Log.d("Разница 1", Weeks.weeksBetween(start, end).weeks.toString())
start = DateTime.parse("2019-11-08")
end = DateTime.parse("2019-11-10")
Log.d("Разница 2", Weeks.weeksBetween(start, end).weeks.toString())
Ответ:
2019-11-01 16:36:25.325 22728-22728/ru.ddstudio.schedule D/Разница 1: 0
2019-11-01 16:36:25.327 22728-22728/ru.ddstudio.schedule D/Разница 2: 0
Собственно ответ должен быть разный, так как они лежат в разных неделях. Взял именно эти данные, чтобы показать что неделя "Американская"
Посмотрел решение с Calendar
Вот код
var calendar = Calendar.getInstance()
calendar.set(2019, 11, 2)
val c1 = calendar.get(Calendar.WEEK_OF_YEAR)
calendar.set(2019, 11, 3)
val c2 = calendar.get(Calendar.WEEK_OF_YEAR)
Log.d("Количество недель с1", (c1).toString())
Log.d("Количество недель с2", (c2).toString())
Log.d("Количество недель", (c2 - c1).toString())
////////////
calendar = Calendar.getInstance()
calendar.set(2019, 11, 3)
val c3 = calendar.get(Calendar.WEEK_OF_YEAR)
calendar.set(2019, 11, 4)
val c4 = calendar.get(Calendar.WEEK_OF_YEAR)
Log.d("Количество недель с3", (c3).toString())
Log.d("Количество недель с4", (c4).toString())
Log.d("Количество недель", (c4 - c3).toString())
Результат:
2019-11-01 16:18:51.726 21282-21282/ru.ddstudio.schedule D/Количество недель с1: 49
2019-11-01 16:18:51.726 21282-21282/ru.ddstudio.schedule D/Количество недель с2: 49
2019-11-01 16:18:51.726 21282-21282/ru.ddstudio.schedule D/Количество недель: 0
2019-11-01 16:18:51.726 21282-21282/ru.ddstudio.schedule D/Количество недель с3: 49
2019-11-01 16:18:51.726 21282-21282/ru.ddstudio.schedule D/Количество недель с4: 49
2019-11-01 16:18:51.726 21282-21282/ru.ddstudio.schedule D/Количество недель: 0
Почему ответ для этих дат одинаков? хотя они находятся в разных неделях