Как получить дату из JTable и вставить ее в поле jdateChooser? [Дубликат]

Нет такой вещи, как «тип» ArrayList.

Класс ArrayList хранит список ссылок Object. Он не знает и не заботится о том, являются ли они всего лишь типом.

В общей системе Java добавлена ​​проверка времени компиляции, чтобы помочь вам отслеживать типы. Итак, если вы объявите ArrayList<Person>, вы получите ошибки компиляции, если вы напишете код, который может вставить в ваш список не Person.

Во время выполнения единственный способ рассказать, что находится в ArrayList, чтобы перебрать все содержащиеся элементы и проверить их с помощью instanceof.

-2
задан harsha 18 May 2017 в 17:55
поделиться

3 ответа

Calendar ca = new GregorianCalendar();
String day = ca.get(Calendar.DAY_OF_MONTH) + "";
String month = ca.get(Calendar.MONTH) + 1 + "";
String year = ca.get(Calendar.YEAR) + "";

if (day.length() == 1) {
    day = "0" + day;
}
if (month.length() == 1) {
    month = "0" + month;
}

String dd = year + "-" + month + "-" + day;

Date date = new SimpleDateFormat("yyyy-MM-dd").parse(dd);
jDateChooser1.setDate(date);

попробуйте установить дату с датой даты компьютера

0
ответ дан clemens 17 August 2018 в 12:09
поделиться
  • 1
    Это выглядит излишне сложным. – Ole V.V. 14 July 2018 в 06:30
  • 2
    Также непонятно, как вопросник должен соответствовать строке 13 Oct 2016 в нем? – Ole V.V. 14 July 2018 в 06:37

В качестве ответа на этот дублированный вопрос был впервые записан. Я думал, что было бы лучше иметь его здесь, поэтому у нас есть все ответы в одном месте.

Следующее должно работать в целом, только детали зависят от формата дат в JTable (от другой вопрос). Я предположил, что из JTable вы получите строку типа 03/07/2018 (мне говорят, что этот формат будет обычным явлением в Португалии). В этом случае следующий разборщик будет хорош для его разбора. Если строка находится в другом формате, форматтер также должен быть другим.

        DateTimeFormatter dtfFormatador = DateTimeFormatter
                .ofLocalizedDate(FormatStyle.MEDIUM)
                .withLocale(Locale.forLanguageTag("pt-PT"));

        LocalDate data = LocalDate.parse(getData, dtfFormatador);
        Instant instante = data.atStartOfDay(ZoneId.systemDefault()).toInstant();
        Date dateAntiquado = Date.from(instante);
        jdcSeletorDeDatas.setDate(dateAntiquado);

К сожалению, JDateChooser.setDate() требует объекта old fashoined Date, хотя мы предпочли бы избежать это устаревший класс. Я использую DateTimeFormatter для разбора строки из JTable в LocalDate и преобразования ее в Date. LocalDate - это класс из java.time, современного API дат и времени Java, который мы должны использовать для даты без времени суток.

Изменить: harsha, ваша строка была

    String date = "13 Oct 2016";

Чтобы проанализировать строку в этом формате, используйте следующий форматтер:

    DateTimeFormatter dateFormatter= DateTimeFormatter
            .ofLocalizedDate(FormatStyle.MEDIUM)
            .withLocale(Locale.US);

В противном случае используйте код выше, где jdcSeletorDeDatas является JDateChooser.

Ссылка: Учебник Oracle: Дата Время , объясняющее, как использовать java.time.

0
ответ дан Ole V.V. 17 August 2018 в 12:09
поделиться

Вы можете сделать это, используя это легко командой SimpleDateFormat

   String date = "13 Oct 2016";
   java.util.Date date2 = new SimpleDateFormat("yyyy-MM-dd").parse(date);
   JdateChooser.setDate(date2);

, а также вы можете использовать любой формат даты.

1
ответ дан Waruna Wijesundara 17 August 2018 в 12:09
поделиться
  • 1
    Я получил java.text.ParseException: Unparseable date: "13 Oct 2016". – Ole V.V. 14 July 2018 в 06:33
Другие вопросы по тегам:

Похожие вопросы: