#android #kotlin #time
Вопрос:
Добрый день, я хочу преобразовать свой simpledateformat, чтобы показать «Вторник, 1 апреля», например, с «15/09/21», мне было интересно, как мне преобразовать его в это? Я прикрепил изображение того, как это выглядит раньше.
Мой код, вызывающий дату:
addAll(pending.sortedByDescending { it.finishDate.convertToDate()?.time })
addAll(accepted.sortedByDescending { it.finishDate.convertToDate()?.time })
Где время называется:
fun String.convertToDate(): Date? {
val sdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss")
return try {
sdf.parse(this)
} catch (e: ParseException) {
Timber.e("wrong date format - parsing not possible")
null
}
}
Комментарии:
1. «15/19/21» не похоже на действительную дату
2. если вы говорите об изображении, то это 15/09/21?
3. дата , указанная в вашем вопросе, неверна, на изображении она правильная
4. моя вина, теперь все исправлено
5. Подумайте о том, чтобы выбросить давно устаревшие и заведомо хлопотные
SimpleDateFormat
и друзья. Посмотрите, можете ли вы использовать десугаринг или добавить ThreeTenABP в свой проект Android, чтобы использовать java.time, современный API даты и времени Java. С ним намного приятнее работать.
Ответ №1:
SimpleDateFormat
это давно устарело и хлопотно, как предлагает @Ole V update to DateTimeFormatter
, Вот пример кода для того же
DateTimeFormatter formatter = null;
String date = "2021-09-16T11:36:15";
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(date, formatter);
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("EEEE, MMM d"); // use MMMM to show full month name
Log.e("Date", "" dateTime.format(formatter2) );
}
Чтобы использовать это ниже Android 8 , используйте десугаринг
Выходной четверг, 16 сентября
Ответ №2:
попробуйте это
fun changedate(olddate:String):String{
var changedDate:String = ""
try {
val dateFormatprev = SimpleDateFormat("dd/MM/yyyy")
val d: Date = dateFormatprev.parse(olddate)
val dateFormat = SimpleDateFormat("EEE, MMM dd")
changedDate = dateFormat.format(d)
println(changedDate)
} catch (e: ParseException) {
e.printStackTrace()
}
return changedDate
}
использование
Log.e("TAG",changedate("01/01/2021"))