Мне нужно преобразовать метку времени, которая в настоящее время находится в строковом формате «08.00», в действительное время в java, чтобы позже я мог сравнить время. Как преобразовать эту строку во время?
Возможный дубликат Преобразование строки Java в дату




Что-то вроде этого
DateFormat sdf = new SimpleDateFormat("hh:mm");
Date date = sdf.parse(time);
@MTplus - класс Date сейчас устарел и в значительной степени устарел, и я почти уверен, что если вы напечатаете здесь date, он будет предполагать 01/01/70, так что будьте осторожны.
Пожалуйста, не учите молодых пользоваться давно устаревшим и заведомо проблемным классом SimpleDateFormat. По крайней мере, не как первый вариант. И не без оговорок. Сегодня у нас намного лучше java.time, современный API даты и времени Java и его DateTimeFormatter. Да, вы можете использовать его на Android. Для более старых версий Android см. Как использовать ThreeTenABP в Android Project.
Самый простой способ сделать это - использовать SimplDateFormatter:
DateFormat sdf = new SimpleDateFormat("hh:mm")
Тогда вы можете вызвать Date date = sdf.parse(*your time string*)
Теперь у вас есть время в виде действительного объекта Date.
Попробуйте код ниже,
String time = "08.00";
try {
DateFormat sdfInput = new SimpleDateFormat("hh.mm");
Date date = sdfInput.parse(time);
DateFormat sdfOutput = new SimpleDateFormat("hh:mm");
Log.e( "Time: ", sdfOutput.format(date));
} catch (Exception e) {
e.printStackTrace();
}
Output -> Time: 08:00
Вместо использования классов Дата и / или SimpleDateFormat, возможно, рассмотрите Местное время
String time = "08:00";
LocalTime lt = LocalTime.parse(time);
System.out.println(lt);
Выход:
08:00
И можно легко сравнить с другими временами с помощью LocalTime::isBefore() или LocalTime::isAfter()
У меня такой формат времени hhmmss = "151918" поэтому вы можете использовать любой формат вместо ччммсс в соответствии с вашим текущим форматом времени, например "чч.мм" или чч: мм: сс и т. д. и вы можете вызвать эту форму метода в любом месте, где вам нужно.
fun convertTimeFormat(time:String):String{
var formattedTime = ""
try {
val inputFormat: DateFormat = SimpleDateFormat("hhmmss")
val timeObj = inputFormat.parse(time)
Log.d("timeObj",""+timeObj)
formattedTime=SimpleDateFormat("hh:mm aa").format(timeObj)
} catch (e: ParseException) {
e.printStackTrace()
}
return formattedTime
}
Пожалуйста, не учите молодых пользоваться давно устаревшим и заведомо проблемным классом SimpleDateFormat. По крайней мере, не как первый вариант. И не без оговорок. Сегодня у нас намного лучше java.time, современный API даты и времени Java и его DateTimeFormatter. Да, вы можете использовать его на Android. Для более старых версий Android см. Как использовать ThreeTenABP в Android Project.
Кроме того, похоже, что он не отвечает на вопрос о том, чтобы получить объекты, которые можно было бы сравнить. Наконец, я думаю, что ваш метод дает неправильный результат, если строка была 121918. Вам необходимо следить за регистром букв в шаблоне формата. Есть разница между hh и HH.
Тег "Android" кажется лишним.