Не получается использовать дату в String.format

Рейтинг: -2Ответов: 1Опубликовано: 02.02.2023

Пытаюсь послать дату в DateTimePicker через Silenium. Использую следующий код

public void setDataDateTimePicker(String cssSelector, Date date) {
    System.out.println("Set date and time to calendar");
    ((JavascriptExecutor) driver)
            .executeScript(String.format("$('%s').datepicker('setDate', '%t)", cssSelector, date));
}

Но String.format почему то не понимает %t. Как будто ошибка по синтаксису

Ответы

▲ 1Принят

%t - это только префикс, указывающий, что будет форматироваться объект, относящийся к дате/времени (см. документацию Formatter::Date/Time Conversions).

В качестве объекта могут приниматься любые типы, использующиеся для представления даты/времени, т.е. long, Long, Date, Calendar и классы из пакета java.time, реализующие интерфейс TemporalAccessor, такие как LocalDate, LocalDateTime и т.д.

Нужно дополнительно указать вид преобразования, например:

  • yyyy-MM-dd: стандартный формат даты ISO-8601: "%tY-%tm-%td" или "%tF"
  • mm/dd/yy: "%tm/%td/%ty" или "%tD"

Примеры использования:

System.out.printf("Set date and time to calendar: %tF %n", new Date());
System.out.printf("Set date and time to calendar: %tD %n", LocalDate.now());
Set date and time to calendar: 2023-02-02 
Set date and time to calendar: 02/02/23