16 ответов:
в 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);
Commons-lang DateFormatUtils полон вкусностей (если у вас есть commons-lang в вашем classpath)
//Formats a date/time into a specific pattern DateFormatUtils.format(yourDate, "yyyy-MM-dd HH:mm:SS");
tl; dr
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.время
современный способ с java.классы времени, которые теперь вытесняют проблемные старые устаревшие классы даты-времени.
сначала преобразуйте ваш
java.util.DateдоInstant. ЭлементInstantкласс представляет момент на временной шкале в UTC с разрешением наносекунд (до девяти (9) знаков после запятой фракция.)преобразования в / из java.время выполняется новыми методами, добавленными к старым классам.
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 или информация о часовом поясе. Создает двусмысленность относительно значения даты-времени этой строки.
также остерегайтесь потери данных, так как любая дробная секунда игнорируется (эффективно усекается) в представлении вашей строки значения даты-времени.
чтобы увидеть тот же самый момент через объектив какого-то конкретного регион времени применить
ZoneIdиZonedDateTime.ZoneId z = ZoneId.of( "America/Montreal" ); ZonedDateTime zdt = instant.atZone( z );нмв.метод 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. Снижается, что также делает ваш код короче. Если это необходимо, укажите свой собственный шаблон форматирования в своем собственном , теперь режим обслуживания, советует миграцию на java.время.дополнительные сведения см. В разделе элемент Oracle Tutorial. Поиск переполнения стека для многих примеров и объяснений.
большая часть java.функциональность time обратно портирована на Java 6 & 7 в ThreeTen-Backport и далее адаптируется к Android in ThreeTenABP (см. как использовать...).
The ThreeTen-Extra проект расширяет java.время с дополнительными занятиями. Этот проект является испытательным полигоном для возможных будущих дополнений к java.время.
Альтенативные однострочные в простой старой 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-%<tm-%<td %<tH:%<tM:%<tS.%<tL%<tz", date); String.format("The date and time in ISO format: %tF %<tT", date);использует форматер и относительный индексации вместо
SimpleDateFormatчто это не потокобезопасна, кстати.немного более повторяющиеся, но нуждается только в одном заявлении. Это может быть удобно в некоторых случаях.
почему бы вам не использовать Joda (org.Джода.время.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.
формат: гггг-ММ-ДД КК: мм: СС
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 относится к 24-часовому формату времени - чч-время в формате 12ч
Если вам нужно только время от даты, вы можете просто использовать функцию String.
Date test = new Date(); String dayString = test.toString(); String timeString = dayString.substring( 11 , 19 );это автоматически сократит временную часть строки и сохранит ее внутри
timeString.
вот примеры использования new 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что его можно эффективно кэшировать, поскольку он потокобезопасен (в отличие отSimpleDateFormat).список предопределенных fomatters и pattern notation reference.
благодарности:
как анализировать / форматировать даты с LocalDateTime? (Java 8)
Java8 Ява.утиль.Преобразование даты в java.время.ZonedDateTime
попробуйте это,
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 см. ссылки ниже
в одном кадре ;)
чтобы получить дату
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; }
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
Comments