Как получить текущую метку времени в строковом формате в Java? "гггг.Мм. ДД.Чч.мм. СС"



Как получить метку времени в строковом формате на Java? "гггг.Мм. ДД.Чч.мм. СС"



String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Timestamp());


Это то, что у меня есть, но Timestamp() требует параметров...

597   5  

5 ответов:

заменить

new Timestamp();

С

new java.util.Date()

потому что нет конструктора по умолчанию для Timestamp, или вы можете сделать это с метод:

new Timestamp(System.currentTimeMillis());

использовать java.util.Date класс вместо метки времени.

String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());

это даст вам текущую дату в указанном формате.

вы можете использовать java.утиль.Дата вместо отметки времени:

String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());

tl; dr

используем только современные java.время классы. Никогда не используйте ужасные унаследованные классы, такие как SimpleDateFormat,Date или java.sql.Timestamp.

ZonedDateTime                    // Represent a moment as perceived in the wall-clock time used by the people of a particular region ( a time zone).
.now(                            // Capture the current moment.
    ZoneId.of( "Africa/Tunis" )  // Specify the time zone using proper Continent/Region name. Never use 3-4 character pseudo-zones such as PDT, EST, IST. 
)                                // Returns a `ZonedDateTime` object. 
.format(                         // Generate a `String` object containing text representing the value of our date-time object. 
    DateTimeFormatter.ofPattern( "uuuu.MM.dd.HH.mm.ss" )
)

использовать java.sql только для передачи базы данных

java.типы SQL, такие как java.sql.Timestamp, должен использоваться только для передачи В и из базы данных. Сразу же конвертировать в java.время в Java 8 и выше.

java.time.Instant

A java.sql.Timestamp карты к java.time.Instant, момент на временной шкале в UTC.

java.sql.Timestamp ts = myResultSet.getTimestamp( … );
Instant instant = ts.toInstant(); 

Часовой Пояс

применить желаемый/ожидаемый часовой пояс, чтобы получить ZonedDateTime.

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );

Отформатированные Строки

использовать DateTimeFormatter создать строки. Коды шаблонов аналогичны кодам java.text.SimpleDateFormat но не совсем, поэтому внимательно прочитайте документ.

DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "uuuu.MM.dd.HH.mm.ss" );
String output = zdt.format( formatter );

этот конкретный формат неоднозначен в отношении его точное значение, поскольку оно не имеет никакого указания смещение от UTC или часового пояса.

ISO 8601

если у вас есть какие-либо сказать в этом вопросе, я предлагаю вам рассмотреть возможность использования стандартных ISO 8601 форматы, а не свертывать ваши собственные. Стандартный формат очень похож на ваш. Например:
2016-02-20T03:26:32+05:30.

java.классы времени используют эти стандартные форматы по умолчанию, поэтому нет необходимости указывать шаблон. Элемент ZonedDateTime класс расширяет стандартный формат путем добавления названия часового пояса (мудрое улучшение).

String output = zdt.toString(); // Example: 2007-12-03T10:15:30+01:00[Europe/Paris]

конвертировать в java.sql

вы можете конвертировать из Java.время назад java.sql.Timestamp. Извлеките Instant С ZonedDateTime.

новые методы были добавлены к старым классам, чтобы облегчить преобразование в / из java.время занятий.

java.sql.Timestamp ts = java.sql.Timestamp.from( zdt.toInstant() );

более подходящим подходом является указание региона локали в качестве параметра в конструкторе. В приведенном ниже примере используется регион локали США. Форматирование даты зависит от локали и использует Локаль для адаптации информации относительно обычаев и соглашений региона пользователя Locale (Java Platform SE 7)

String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss", Locale.US).format(new Date());

Comments

    Ничего не найдено.