Как отформатировать java.SQL Timestamp для отображения?



Как мне сформировать java.sql Timestamp по моему вкусу ? (в строку, для целей отображения)

716   7  

7 ответов:

java.sql.Timestamp выходит java.util.Date. Вы можете сделать:

String s = new SimpleDateFormat("MM/dd/yyyy").format(myTimestamp);

или также включить время:

String s = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(myTimestamp);

Использовать String.формат (или java.утиль.Форматер):

Timestamp timestamp = ...
String.format("%1$TD %1$TT", timestamp)

EDIT:
пожалуйста, ознакомьтесь с документацией Formatter, чтобы узнать, что означает TD и TT: нажмите на java.утиль.Форматер

первая буква " Т " означает:

't', 'T'    date/time   Prefix for date and time conversion characters.

и символ, следующий за этим 'T':

'T'     Time formatted for the 24-hour clock as "%tH:%tM:%tS".
'D'     Date formatted as "%tm/%td/%ty". 

для этого конкретного вопроса, стандартное предложение java.text.SimpleDateFormat работает, но имеет побочный эффект, что SimpleDateFormatне является потокобезопасным и может быть источником особенно неприятных проблем, так как это повредит ваш вывод в многопоточных сценариях, и вы не получите никаких исключений!

Я бы сильно рекомендую обратить внимание на Джода ничего подобного. Зачем ? Это гораздо богаче и интуитивно понятнее библиотека времени / даты для Java, чем текущая библиотека (и основа новой стандартной библиотеки даты/времени Java, поэтому вы скоро узнаете стандартный API).

Если вы используете MySQL и хотите, чтобы сама база данных выполняла преобразование, используйте это:

DATE_FORMAT(дата,формат)

Если вы предпочитаете форматировать с помощью Java, используйте это:

java.текст.SimpleDateFormat

SimpleDateFormat dateFormat = new SimpleDateFormat("M/dd/yyyy");
dateFormat.format( new Date() );

использовать DateFormat. В интернационализированном приложении используйте формат, предоставляемый getInstance. Если вы хотите явно управлять форматом, создайте новый SimpleDateFormat себя.

строка timeFrSSHStr = timeFrSSH.toString ();

Comments

  1. Валерий
    Валерий 3 года назад
    <p>Основная проблема форматирвания Timestamp это вывод и парсиг микро и нано секунд. Свое решение я описал в статье</p>

    <p>См. стать. https://habr.com/ru/post/700148/</p>

    <p>пример:</p>

    <pre>
    <code class="language-java">Timestamp t = new Timestamp(System.currentTimeMillis());
    t.setNanos(345012000); // устанавливать наносекунды
    TimestampFormatter f = new TimestampFormatter();
    String s = f.format(t);
    System.out.println(s);</code></pre>

    <p>Результат</p>

    <pre>
    <code>2022-11-18T09:20:35.345012+03:00</code></pre>

    <p>Как задать шаблон формата, описано в документации к классу SimpleDateFormat</p>