Полный календарь 4.x для Vaadin Framework 14+ не отображается в 24-часовом формате - PullRequest
0 голосов
/ 27 февраля 2020

введите описание изображения здесь Я создал FullCalendar, он отображает время в AM / PM. Когда я добавляю записи в календарь, я форматирую LocalDateTime в 24-часовой формат, но календарь отображает его в формате AM / PM.

Как я могу отображать записи календаря в 24-часовом формате? Мой форматтер определяется как:

public static final DateTimeFormatter TWENTY_FOUR_HOURS_DATE_TIME_FORMATTER = 
    DateTimeFormatter.ofPattern("dd-MMM-yyyy HH:mm:ss", AppConstants.APP_LOCALE);

Entry entry = new Entry();
entry.setEditable(false);
entry.setTitle(game.getHomeClub() + " - " +game.getHomeTeam());

Instant now = Instant.now();

String t = LocalDateTime.of(game.getGameTime().toLocalDate(), game.getGameTime().toLocalTime())
.format(FormattingUtils.TWENTY_FOUR_HOURS_DATE_TIME_FORMATTER);

entry.setStart(calendar.getTimezone().convertToUTC(LocalDateTime.parse(t, FormattingUtils.TWENTY_FOUR_HOURS_DATE_TIME_FORMATTER)));    

entry.setEnd(game.getGameTime().plus(2, ChronoUnit.HOURS));
calendar = new MyFullCalendar();

calendar.setWeekNumbersVisible(true);
calendar.setNowIndicatorShown(false);
calendar.setNumberClickable(true);
calendar.changeView(CalendarViewImpl.AGENDA_WEEK);

calendar.setLocale(Locale.GERMANY);



private void createTimedEntry(FullCalendar calendar, String title, String start, int minutes, String color) {
    Entry entry = new Entry();
    setValues(calendar, entry, title, start, minutes, ChronoUnit.MINUTES, color);
    calendar.addEntry(entry);
}

1 Ответ

1 голос
/ 27 февраля 2020

Вам необходимо установить Locale.

@Route(value = "test")
class TestView extends Composite<Div> {

    TestView() {
        Locale defaultLocale = Locale.GERMANY
        FullCalendar calendar = FullCalendarBuilder.create().build()
        calendar.changeView(CalendarViewImpl.TIME_GRID_DAY)
        calendar.setSizeFull()

        RadioButtonGroup<Locale> localeSwitcher = new RadioButtonGroup()

        localeSwitcher.setItems([defaultLocale, Locale.US])
        localeSwitcher.addValueChangeListener({ ev ->
            calendar.setLocale(localeSwitcher.value)
        })
        localeSwitcher.setValue(defaultLocale)
        VerticalLayout layout = new VerticalLayout(localeSwitcher, calendar)
        layout.setSizeFull()

        content.add(layout)
    }
}

Код (Groovy) выше производит следующий календарь для German Locale:

German Locale

и это для US Locale:

US Locale

...