Вот код, я пытаюсь преобразовать минуты, которые имеют тип String, в целочисленный тип, но у меня возникает ошибка NumberFormatException, может ли кто-нибудь мне помочь, как я справлюсь с этой ситуацией. Спасибо.
import java.util.Date;
class DateDemo
{
public static void main(String args[])
{
// Instantiate a Date object
Date date = new Date();
// display time and date
String str = String.format("Current Minutes : %tM", date );
try
{
int a = Integer.valueOf(str);
System.out.print(a);
}
catch(NumberFormatException e)
{
System.out.println("Error is : "+e);
}
}
}
Каково значение String str в момент, когда вы пытаетесь его проанализировать?
У меня эта ошибка: java.lang.NumberFormatException: для входной строки: «Текущая дата / время: 43», на самом деле я хочу, чтобы программа преобразовала этот «43», который является строкой, в целочисленный тип.
@PatrickNijhuis 50
@umar khan - это значение str или значение минут. Сообщение об ошибке содержит всю строку, которую вы пытаетесь проанализировать.
@PatrickNijhuis, это значение минут, я, Герадж, только что сказал мне, что я пытаюсь проанализировать всю строку, затем я исправил ее, и теперь она работает. ;)




Использовать
String str = String.format("%tM", date );
Вы получаете исключение, потому что пытаетесь преобразовать строку «Текущая дата / время: xx» в число;
Это работает, спасибо, чувак! ;)
LocalTime now = LocalTime.now(ZoneId.of("Indian/Mahe"));
int currentMinuteOfHour = now.getMinute();
System.out.println(currentMinuteOfHour);
На моем компьютере это только что напечатано
53
Нет необходимости преобразовывать минуты в строку и анализировать ее.
Кроме того, класс Date давно устарел (это не каламбур). Лучше использовать java.time, современный API даты и времени Java. С ним намного приятнее работать. И, как видите, он обеспечивает гораздо более простой код.
Текущая минута зависит от часового пояса. Поэтому укажите предполагаемый часовой пояс, в котором я поместил Indian / Mahe. Вы можете использовать текущую настройку часового пояса JVM: ZoneId.systemDefault(). Этот параметр может быть изменен в любое время другими частями вашей программы или другими программами, работающими в той же самой JVM.
Что пошло не так в вашем коде? Ваш вызов String.format() произвел строку типа Current Minutes : 43. Это не соответствует синтаксису целого числа (только 43). Следовательно, вы получили исключение при попытке разобрать его с помощью Integer.valueOf(str).
Ссылка на руководство:Учебник Oracle: Дата и время объясняет, как использовать java.time.
Я понимаю, спасибо за ссылку. ;)
Это неправильный способ получить минуты. Если вы используете Java 8 или более позднюю версию, вы можете сделать это, чтобы получить минуты
LocalDateTime localDateTime=LocalDateTime.now();
System.out.println(localDateTime.getMinute());
Верно, что это правильное решение. Он также работает в Java 6 и 7, когда вы добавляете ThreeTen Backport в свой проект программирования.
Какой номер вы ожидаете получить от
"Current Date/Time"? Каков ожидаемый результат?