Как получить текущую метку времени в строковом формате в Java? "гггг.Мм. ДД.Чч.мм. СС"
Как получить метку времени в формате строки в Java? "гггг.Мм. ДД.Чч.мм. СС"
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Timestamp());
Это то, что у меня есть, но Timestamp() требует параметров...
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.классы времени используют эти стандартные форматы по умолчанию, поэтому нет необходимости указывать шаблон. The 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() );
более подходящим подходом является указание области локали в качестве параметра в конструкторе. В приведенном ниже примере используется языковой регион США. Форматирование даты зависит от локали и использует Локаль для настройки информации относительно обычаев и соглашений региона пользователя Локаль (платформа Java SE 7)
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss", Locale.US).format(new Date());