Как получить текущую метку времени в строковом формате в 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.InstantA
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