Форматирование даты: я хотел бы получить следующий формат даты 25/11/1990 14:35 на основе метки времени в формате '0001-01-01-00.00.00.000000' - PullRequest
0 голосов
/ 06 апреля 2020

Я хотел бы получить следующий формат даты 25/11/1990 14:35 на основе метки времени в формате '0001-01-01-00.00.00.000000'.

Это необходимо сделать либо через Angular 6 или Java 8.

Пожалуйста, предоставьте любые соответствующие решения.

Мой подход:

Timestamp timestamp = Timestamp.valueOf("1990-11-25 01:02:03.123456789")//Value from Db.
String str = timestamp.tostring();
str.substring();

Это помогает мне для отображения пользователю но, поскольку я преобразовываю его в строку, я не могу сохранить его в БД, поскольку БД будет хранить только формат отметки времени.

1 Ответ

0 голосов
/ 06 апреля 2020

java .time и JDB C 4.2

Я настоятельно рекомендую использовать java .time, современный Java API даты и времени, для работы с датой и временем, а не старый Timestamp класс. В этом примере фрагмента показано, как вы извлекаете метку времени из своей базы данных и форматируете ее для пользователя:

    DateTimeFormatter formatter = DateTimeFormatter
            .ofLocalizedDateTime(FormatStyle.SHORT)
            .withLocale(Locale.forLanguageTag("pt"));

    PreparedStatement query = yourDatabaseConnection.prepareStatement(
            "select your_timestamp_column from your_table where id = 4;");
    ResultSet rs = query.executeQuery();
    if (rs.next()) {
        OffsetDateTime dateTime
                = rs.getObject("your_timestamp_column", OffsetDateTime.class);
        String str = dateTime.format(formatter);
        System.out.println(str);
    }

Пример вывода будет

25/11/11 1990 1990: 35

Пожалуйста, вставьте языковой тег вашего пользователя, куда я положил pt (для португальского). Или пропустите вызов withLocale, чтобы полагаться на локаль по умолчанию вашей JVM. И обратите внимание на использование getObject() вместо getTimestamp().

Я использовал OffsetDateTime в коде, исходя из предположения, что тип данных в вашей базе данных равен timestamp with time zone, что рекомендуется для метки времени. В этом случае вам может также потребоваться преобразовать временную метку в часовой пояс пользователя перед ее форматированием.

Если тип данных timestamp без часового пояса, вместо этого используйте LocalDateTime точно таким же образом.

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

...