Преобразовать java.util.Date в строку

Я хочу преобразовать объект java.util.Date в String в Java.

Формат – 2010-05-30 22:15:52

В Java преобразуйте дату в строку со строкой формата:

 // Create an instance of SimpleDateFormat used for formatting // the string representation of date (month/day/year) DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); // Get the date today using Calendar object. Date today = Calendar.getInstance().getTime(); // Using DateFormat format method we can create a string // representation of a date with the defined format. String reportDate = df.format(today); // Print what date is today! System.out.println("Report Date: " + reportDate); 

С http://www.kodejava.org/examples/86.html

 Format formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String s = formatter.format(date); 

Commons-lang DateFormatUtils полна положительных героев (если у вас есть commons-lang в вашем пути к classу)

 //Formats a date/time into a specific pattern DateFormatUtils.format(yourDate, "yyyy-MM-dd HH:mm:SS"); 

ТЛ; др

 myUtilDate.toInstant() // Convert `java.util.Date` to `Instant`. .atOffset( ZoneOffset.UTC ) // Transform `Instant` to `OffsetDateTime`. .format( DateTimeFormatter.ISO_LOCAL_DATE_TIME ) // Generate a String. .replace( "T" , " " ) // Put a SPACE in the middle. 

2014-11-14 14:05:09

java.time

Современный способ – это classы java.time, которые теперь вытесняют неприятные старые устаревшие classы времени.

Сначала конвертируйте свой java.util.Date в Instant . Instant class представляет момент на временной шкале в UTC с разрешением наносекунд (до девяти (9) цифр десятичной дроби).

Конверсии в / из java.time выполняются с помощью новых методов, добавленных в старые classы.

 Instant instant = myUtilDate.toInstant(); 

Оба java.util.Date и java.time.Instant находятся в UTC . Если вы хотите видеть дату и время как UTC, пусть будет так. Вызовите toString для генерации строки в стандартном формате ISO 8601 .

 String output = instant.toString(); 

2014-11-14T14: 05: 09Z

Для других форматов вам необходимо преобразовать Instant в более гибкое OffsetDateTime .

 OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ); 

odt.toString (): 2014-11-14T14: 05: 09 + 00: 00

Чтобы получить строку в нужном формате, укажите DateTimeFormatter . Вы можете указать собственный формат. Но я бы использовал один из предопределенных форматировщиков ( ISO_LOCAL_DATE_TIME ) и заменил T на своем выходе пространством.

 String output = odt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME ) .replace( "T" , " " ); 

2014-11-14 14:05:09

Кстати, я не рекомендую этот формат, где вы намеренно теряете информацию о смете-от-UTC или часовом поясе. Создает двусмысленность относительно значения значения даты и времени этой строки.

Также остерегайтесь потери данных, так как любая дробная секунда игнорируется (эффективно усечена) в представлении String значения даты.

Чтобы увидеть тот же самый момент через объектив настенных часов определенного региона, примените ZoneId чтобы получить ZonedDateTime .

 ZoneId z = ZoneId.of( "America/Montreal" ); ZonedDateTime zdt = instant.atZone( z ); 

zdt.toString (): 2014-11-14T14: 05: 09-05: 00 [Америка / Монреаль]

Чтобы сгенерировать форматированную строку, сделайте то же самое, что и выше, но замените odt на zdt .

 String output = zdt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME ) .replace( "T" , " " ); 

2014-11-14 14:05:09

Если вы выполняете этот код очень много раз, вы можете быть немного более эффективным и избегать вызова String::replace . Удаление этого вызова также делает ваш код короче. Если это необходимо, укажите свой собственный шаблон форматирования в собственном объекте DateTimeFormatter . Кэшируйте этот экземпляр как константу или член для повторного использования.

 DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-dd HH:mm:ss" ); // Data-loss: Dropping any fractional second. 

Примените этот форматтер, передав экземпляр.

 String output = zdt.format( f ); 

О java.time

Рамка java.time встроена в Java 8 и более поздние версии . Эти classы вытесняют неприятные старые classы времени, такие как java.util.Date , .Calendar , & java.text.SimpleDateFormat .

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

Чтобы узнать больше, ознакомьтесь с учебным пособием Oracle . И поиск Stack Overflow для многих примеров и объяснений.

Большая часть функциональных возможностей java.time была перенесена на Java 6 и 7 в ThreeTen-Backport и далее адаптирована для Android в ThreeTenABP (см. Как использовать … ).

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

Отличительные однострочные линии в простой Java:

 String.format("The date: %tY-%tm-%td", date, date, date); String.format("The date: %1$tY-%1$tm-%1$td", date); String.format("Time with tz: %tY-% 

Это использует Formatter и относительное индексирование вместо SimpleDateFormat которое не является streamобезопасным , кстати.

Чуть более повторяющийся, но требует только одного утверждения. В некоторых случаях это может быть удобно.

Почему вы не используете Joda (org.joda.time.DateTime)? Это в основном однострочный.

 Date currentDate = GregorianCalendar.getInstance().getTime(); String output = new DateTime( currentDate ).toString("yyyy-MM-dd HH:mm:ss"); // output: 2014-11-14 14:05:09 

Похоже, вы ищете SimpleDateFormat .

Формат: yyyy-MM-dd kk: mm: ss

 public static String formateDate(String dateString) { Date date; String formattedDate = ""; try { date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss",Locale.getDefault()).parse(dateString); formattedDate = new SimpleDateFormat("dd/MM/yyyy",Locale.getDefault()).format(date); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return formattedDate; } 

Самый простой способ использовать его:

 currentISODate = new Date().parse("yyyy-MM-dd'T'HH:mm:ss", "2013-04-14T16:11:48.000"); 

где «yyyy-MM-dd’T’HH: mm: ss» – формат даты чтения

Выход: Вс апр 14 16:11:48 EEST 2013

Примечания: HH vs hh – HH относится к 24-часовому формату – hh относится к 12-часовому формату

Если вам нужно только время с даты, вы можете просто использовать функцию String.

 Date test = new Date(); String dayString = test.toString(); String timeString = dayString.substring( 11 , 19 ); 

Это автоматически сократит временную часть String и сохранит ее внутри timeString .

Вот примеры использования нового Java 8 Time API для форматирования устаревшего java.util.Date :

  DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS Z") .withZone(ZoneOffset.UTC); String utcFormatted = formatter.format(date.toInstant()); ZonedDateTime utcDatetime = date.toInstant().atZone(ZoneOffset.UTC); String utcFormatted2 = utcDatetime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS Z")); // gives the same as above ZonedDateTime localDatetime = date.toInstant().atZone(ZoneId.systemDefault()); String localFormatted = localDatetime.format(DateTimeFormatter.ISO_ZONED_DATE_TIME); // 2011-12-03T10:15:30+01:00[Europe/Paris] String nowFormatted = LocalDateTime.now().toString(); // 2007-12-03T10:15:30.123 

В DateTimeFormatter приятно, что он может быть эффективно кэширован, поскольку он является streamобезопасным (в отличие от SimpleDateFormat ).

Список предопределенных ссылок на изображения и обозначения образов .

Кредиты:

Как анализировать / форматировать даты с помощью LocalDateTime? (Java 8)

Преобразование Java8 java.util.Date в java.time.ZonedDateTime

Формат Instant to String

В чем разница между java 8 ZonedDateTime и OffsetDateTime?

В одиночном кадре;)

Получить дату

 String date = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date()); 

Получить Время

 String time = new SimpleDateFormat("hh:mm", Locale.getDefault()).format(new Date()); 

Чтобы получить дату и время

 String dateTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.getDefaut()).format(new Date()); 

Счастливое кодирование 🙂

 public static void main(String[] args) { Date d = new Date(); SimpleDateFormat form = new SimpleDateFormat("dd-mm-yyyy hh:mm:ss"); System.out.println(form.format(d)); String str = form.format(d); // or if you want to save it in String str System.out.println(str); // and print after that } 

Попробуем это

 public static void main(String args[]) { Calendar cal = GregorianCalendar.getInstance(); Date today = cal.getTime(); DateFormat df7 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { String str7 = df7.format(today); System.out.println("String in yyyy-MM-dd format is: " + str7); } catch (Exception ex) { ex.printStackTrace(); } } 

Или функция полезности

 public String convertDateToString(Date date, String format) { String dateStr = null; DateFormat df = new SimpleDateFormat(format); try { dateStr = df.format(date); } catch (Exception ex) { ex.printStackTrace(); } return dateStr; } 

From Convert Date to String в Java

Попробуй это,

 import java.text.ParseException; import java.text.SimpleDateFormat; public class Date { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String strDate = "2013-05-14 17:07:21"; try { java.util.Date dt = sdf.parse(strDate); System.out.println(sdf.format(dt)); } catch (ParseException pe) { pe.printStackTrace(); } } } 

Вывод:

 2013-05-14 17:07:21 

Подробнее о форматировании даты и времени в java см. Ссылки ниже

Справочный центр Oracle

Пример времени в java

  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date = "2010-05-30 22:15:52"; java.util.Date formatedDate = sdf.parse(date); // returns a String when it is parsed System.out.println(sdf.format(formatedDate)); // the use of format function returns a String 
  • Форматирование JSON в C #?
  • Значение двойного значения в формате Java в виде суммы в долларах
  • Как установить языковой стандарт cout для вставки запятых в качестве разделителей тысяч?
  • Правильный формат валюты, когда не отображается национальная валюта культуры
  • JPanel Padding в Java
  • Распечатывать элементы из массива с запятой между элементами, кроме последнего слова
  • Как я могу поместить int с ведущими нулями при использовании оператора cout <<?
  • форматируйте число с запятыми и десятичными знаками в C # (asp.net MVC3)
  • Вставить текст в textarea с помощью jQuery
  • Что означает {0}, когда он найден в строке в C #?
  • std :: string форматирование, подобное sprintf
  • Давайте будем гением компьютера.