Почему мой J2ME DateField не отображает правильную дату? - PullRequest
1 голос
/ 06 апреля 2009

Я храню значения и значения дат в хранилище записей. У меня есть поле даты, настроенное так:

StartDate = new DateField("Start Date ", DateField.DATE);
                cal1 = Calendar.getInstance();
                cal1.set(Calendar.YEAR, 2009);
                cal1.set(Calendar.MONTH, 0);
                cal1.set(Calendar.DAY_OF_MONTH, 1);
                StartDate.setDate(cal1.getTime());

и я сохраняю дату в виде строки следующим образом:

 strStartDate = cal1.get(cal1.DAY_OF_MONTH) + "/" +
                (cal1.get(cal1.MONTH) + 1) + "/" +
                cal1.get(cal1.YEAR);
 String detailsToAdd = strStartDate

(Я сократил код.) Теперь я хочу иметь возможность редактировать дату на следующем этапе. Тем не менее, мне нужен код, чтобы быть в состоянии сделать это. Пока что у меня есть:

EStartDate = new DateField("Start Date ", DateField.DATE);

Мне пришлось изменить имя поля DateField, поскольку это противоречило другим вещам.

Мне нужно показать атрибут даты выбранной записи. В настоящее время у меня отображается другая информация. Мне просто нужно показать правильную дату. Когда я запускаю программу, поле даты показывает <date>.

Любая помощь будет хорошей

Ответы [ 3 ]

1 голос
/ 07 сентября 2011

Ваш первый приведенный код верен:

            StartDate = new DateField("Start Date ", DateField.DATE);
            cal1 = Calendar.getInstance();
            cal1.set(Calendar.YEAR, 2009);
            cal1.set(Calendar.MONTH, 0);
            cal1.set(Calendar.DAY_OF_MONTH, 1);
            StartDate.setDate(cal1.getTime());

Но для второго вы не можете сохранить дату в String напрямую. Вы должны преобразовать его в строку следующим образом:

            String detailsToAdd =strStartDate.toString();
0 голосов
/ 08 сентября 2011

Предоставленный вами фрагмент кода не использует setDate (Date) . Если ваш реальный код его тоже не использует, то <date> в поле - правильное поведение - оно говорит вам, что дата «не инициализирована».

В этом случае сначала попробуйте покурить с помощью простого кода, например

    eStartDate = new DateField("Start Date ", DateField.DATE);
    eStartDate.setDate(new Date());

затем, если это показывает дату, узнайте, как воссоздать необходимый параметр Date из strStartDate. То есть воссоздайте, если вы хотите, чтобы пользователь мог изменить его - потому что если вам нужно только отобразить дату, было бы проще использовать StringItem, отображая нужную строку вместо

0 голосов
/ 10 апреля 2009

Может ли быть так, что используемая вами локаль не принимает даты с / в качестве разделителя? Я уверен, что существует независимый от локали способ составления даты без использования конкатенации строк, как в вашем примере.

...