#android #simpledateformat
#Android #simpledateformat
Вопрос:
Я получаю сообщение об ошибке при использовании функции SimpleDateFormatter.parse(). Я заставляю пользователя вводить дату и время с помощью DatePicker и TimePicker соответственно, и я собираю информацию из обоих средств выбора и пытаюсь создать объект Date, чтобы я мог сравнить его с другим объектом date (системной датой).
Но когда я пытаюсь проанализировать дату, чтобы сформировать формат даты, я получаю ошибку.
Фрагмент кода, вызывающий ошибку, является
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
int day = dpicker.getDayOfMonth();
int month = dpicker.getMonth() 1;
if (month < 10)
{
monthS = "0" month;
}
else
{
monthS = String.valueOf(month);
}
int year = dpicker.getYear();
int minutes = tpicker.getCurrentMinute();
int hours = tpicker.getCurrentHour();
if (hours < 10)
{
hoursS = "0" hours;
}
else
{
hoursS = String.valueOf(hours);
}
date = year "-" monthS "-" day " " hoursS ":" minutes ;
tview.setText("Date and Time are" date) ;
}
});
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:MM");
try {
newDate = sdf.parse(date);
} catch (java.text.ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
tview2.setText(newDate.toString());
Я был бы признателен за любую помощь по этой ошибке.
Спасибо, Sid
Комментарии:
1. Вы получаете исключение с нулевым указателем. кажется, вы не инициализировали объект.
2. Я ценю вашу помощь, Танмэй, не могли бы вы, пожалуйста, объяснить, как можно инициализировать объект ‘sdf’. Я новичок в Android. Спасибо.
3. в этой строке,
newDate = sdf.parse(date);
похожеdate
, неверный формат …. Распечатайтеdate
в консоли и посмотрите результат.4. просто распечатайте свою переменную date и проверьте, регистрируется ее поступление или нет?
Ответ №1:
Вы выполняете синтаксический анализ date
вне прослушивателя onClick, поэтому, возможно, в это время переменная date
не инициализирована. Я думаю, вам следует переместить цикл try / catch внутри listener.
Комментарии:
1. Спасибо за вашу помощь, я действительно смог создать объект date из year, month, day, hours и time, указанных в диалоговом окне выбора даты, это было проще, поскольку я обошел необходимость создания строки и преобразования строки tge в дату. Спасибо
Ответ №2:
Проблема в том, что date
равно нулю. Код внутри вашего OnClickListener не будет выполняться до тех пор, пока не будет нажата кнопка.
Комментарии:
1. Спасибо за вашу помощь, я действительно смог создать объект date из year, month, day, hours и time, указанных в диалоговом окне выбора даты, это было проще, поскольку я обошел необходимость создания строки и преобразования строки tge в дату. Спасибо
Ответ №3:
Это не sdf
объект, который не инициализирован, это, вероятно, data
строка, которая по-прежнему равна null (хотя мы не можем быть уверены, пока не увидим код перед ней). Вы пытаетесь выполнить синтаксический анализ date
, но из того, что вы опубликовали, вы только изменяете / присваиваете ему значение в OnClickListener
, которое не вызывается до щелчка.
Итак, что вы в основном делаете, это:
- объявляем строку date.
- установите onclicklistener.
- используйте строку
date
перед ее инициализацией.
Исправьте это, установив значение по умолчанию на date или также поместите синтаксический анализ в прослушиватель (независимо от того, что соответствует правильной логике, которая вам нужна)
Комментарии:
1.Спасибо за вашу помощь, я действительно смог создать объект date из year, month, day, hours и time, указанных в диалоговом окне выбора даты, это было проще, поскольку я обошел необходимость создания строки и преобразования строки tge в дату. Спасибо