Как получить текущую временную метку в строчном формате в Java? "Yyyy.MM.dd.HH.mm.ss" - программирование
Подтвердить что ты не робот

Как получить текущую временную метку в строчном формате в Java? "Yyyy.MM.dd.HH.mm.ss"

Как получить временную метку в строчном формате в Java? "Yyyy.MM.dd.HH.mm.ss"

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

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

4b9b3361

Ответ 1

Заменить

new Timestamp();

с

new java.util.Date()

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

new Timestamp(System.currentTimeMillis());

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

ТЛ; др

Используйте только современные классы java.time. Никогда не используйте ужасные унаследованные классы, такие как 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.time & JDBC 4.2

Современный подход использует классы java.time, как показано выше.

Если ваш драйвер JDBC соответствует JDBC 4.2, вы можете напрямую обмениваться объектами java.time с базой данных. Используйте PreparedStatement::setObject и ResultSet::getObject.

Используйте java.sql только для драйверов до JDBC 4.2

Если ваш драйвер JDBC еще не соответствует JDBC 4.2 для поддержки типов java.time, вы должны использовать классы java.sql.

Хранение данных.

OffsetDateTime odt = OffsetDateTime.now( ZoneOffset.UTC ) ;  // Capture the current moment in UTC.
myPreparedStatement.setObject( … , odt ) ;

Извлечение данных.

OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;

Типы java.sql, такие как java.sql.Timestamp, должны использоваться только для передачи в базу данных и из java.sql.Timestamp. Немедленно конвертируйте в java.time типы в Java 8 и более поздних версиях.

java.time.Instant

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.time по умолчанию используют эти стандартные форматы, поэтому не нужно указывать шаблон. Класс ZonedDateTime расширяет стандартный формат, добавляя имя часового пояса (мудрое улучшение).

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

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

Вы можете конвертировать из java.time обратно в java.sql.Timestamp. Извлечь Instant из ZonedDateTime.

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

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

О java.time

Инфраструктура java.time встроена в Java 8 и более поздние версии. Эти классы вытеснять неприятные старые устаревшие классы даты и времени, такие как java.util.Date, Calendar, и SimpleDateFormat.

Проект Joda-Time, находящийся сейчас в режиме обслуживания, рекомендует перейти на классы java.time.

Чтобы узнать больше, смотрите Oracle Tutorial. И поиск для многих примеров и объяснений. Спецификация JSR 310.

Вы можете обмениваться объектами java.time напрямую с вашей базой данных. Используйте драйвер JDBC, соответствующий JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.*.

Где взять классы java.time?

Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как Interval, YearWeek, YearQuarter и другие.

Ответ 5

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

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

Ответ 6

Вы можете использовать следующее

new java.sql.Timestamp(System.currentTimeMillis()).getTime()

Result : 1539594988651

Надеюсь, это поможет. Просто мое предложение, а не за бонусные баллы.