<input type = "date"> формат - PullRequest
0 голосов
/ 02 мая 2018

У меня было поле «Желаемая дата начала», которое было текстовым полем. Я хранил дату как long в mongoDb и отображал ее как String, а также получал ее как String с классом SimpleDateFormat. Я узнал о <input type="date"> и сейчас пытаюсь заставить его работать. Я пытаюсь выбрать дату в формате ГГГГ-ММ-ДД и отобразить ее в формате ГГГГ-ММ-ДД, но в календаре ничего не меняется.

public class DateFormatterUtils {

    public static Long formatDate(String date) {
        if (date != null && !date.equals("")) {
            List<SimpleDateFormat> datePatterns = new ArrayList<SimpleDateFormat>();
            datePatterns.add(new SimpleDateFormat("dd MM yyyy"));
            datePatterns.add(new SimpleDateFormat("dd-MM-yyyy"));
            datePatterns.add(new SimpleDateFormat("dd/MM/yyyy"));
            datePatterns.add(new SimpleDateFormat("dd.MM.yyyy"));
            datePatterns.add(new SimpleDateFormat("dd,MM,yyyy"));
            datePatterns.add(new SimpleDateFormat("ddMMyyyy"));
            datePatterns.add(new SimpleDateFormat("dd:MM:yyyy"));
            datePatterns.add(new SimpleDateFormat("dd_MM_yyyy"));
            datePatterns.add(new SimpleDateFormat("MM/dd/yyyy"));
            datePatterns.add(new SimpleDateFormat("YYYY-MM-DD"));
            datePatterns.add(new SimpleDateFormat("yyyy-mm-dd"));

            for (SimpleDateFormat pattern : datePatterns) {
                try {
                    return pattern.parse(date).getTime();
                } catch (ParseException e) {

                }
            }
        }
        return null;

    }

    public static String readDate(Long timeStamp) {
        if (timeStamp == null) {
            return "";
        }
        SimpleDateFormat formatter = new SimpleDateFormat("YYYY-MM-DD");
        Date date = new Date(timeStamp);
        return formatter.format(date);
    }

}

Это мой старый метод, помогающий мне получать входные данные в разных форматах, и readDate() отображал его в формате дд / мм / гггг. Я проверил в документации, и дата в формате YYYY-MM-DD. Когда представление генерируется с помощью тимьяна, поле этого календаря остается в виде мм / дд / гггг без выбранной даты

1 Ответ

0 голосов
/ 02 мая 2018

В HTML5 тип ввода даты имеет формат гггг-мм-дд (RFC3339, как сказано в документации https://www.w3.org/TR/2011/WD-html-markup-20110405/input.date.html)

К сожалению, браузеру решать, как обрабатывать такие теги, и обрабатывают ли они вообще. В Chrome я думаю, что они используют формат системы локали. Для других браузеров я не уверен. Самый безопасный способ - использовать какой-либо инструмент выбора даты, в котором вы можете выбрать формат даты и убедиться, что он работает во всех браузерах / клиентах.

Я полагаю, что это не поддерживается в IE10, и я только что проверил на моей версии ESR Firefox, и она также не работает, поэтому сейчас я бы подождал с вводом type = "date"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...