2010-05-31 10 views

ответ

24
// On the form: dow mon dd hh:mm:ss zzz yyyy 
new Date().toString(); 
+2

Это покажет дату и время, а не только текущую дату. – Adamski

+44

Жаль из-за перенапряжения. – jasonmp85

+1

Формат, используемый этим методом, ужасен. Кроме того, неявно применяется текущий часовой пояс вашего KVM, поэтому ваши результаты будут отличаться. И эти неприятные классы теперь являются наследием, вытесняемым классами java.time. См. [Учебник по Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –

11

Использовать DateFormat исполнение; например SimpleDateFormat.

DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 
String data = df.format(new Date()); 
+0

FYI, эти неприятные классы теперь являются устаревшими, вытесняются классами java.time. См. [Учебник по Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –

55
// GET DATE & TIME IN ANY FORMAT 
import java.util.Calendar; 
import java.text.SimpleDateFormat; 
public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss"; 

public static String now() { 
Calendar cal = Calendar.getInstance(); 
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); 
return sdf.format(cal.getTime()); 
} 

Взятые из here

+0

Лучший ответ для использования Календарь вместо даты. – Random

+4

Я смущен. В чем юниверс «Календарь» более желателен, чем «Дата»? – jasonmp85

+4

Его фактически все еще используют 'Date', потому что' Calendar # getTime() 'возвращает' Date' ... – brimborium

168
String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date()); 
+11

Желание я мог бы дать более 1 голоса. – TimeTrap

+0

Используется комбинация этого и ответа справа внизу для timestring. C: –

+0

@Ian Purton Является ли строка датой в UTC tz ..? –

8

Быстрее:

String date = FastDateFormat.getInstance("dd-MM-yyyy").format(System.currentTimeMillis()); 
+1

Требуется org.apache.commons –

1

ТЛ; Др

LocalDate.now() 
     .toString() 

2017-01-23

Лучше конкретно указать желаемый/ожидаемый часовой пояс.

LocalDate.now(ZoneId.of("America/Montreal")) 
     .toString() 

java.time

Современный способ, как из Java 8, а затем это с java.time рамки.

Укажите часовой пояс, так как дата варьируется в разных частях света в любой момент.

ZoneId zoneId = ZoneId.of("America/Montreal") ; // Or ZoneOffset.UTC or ZoneId.systemDefault() 
LocalDate today = LocalDate.now(zoneId) ; 
String output = today.toString() ; 

2017-01-23

По умолчанию вы получаете строку в стандартном формате ISO 8601.

Для других форматов используйте класс java.time.format.DateTimeFormatter.

О java.time

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

Проект Joda-Time, теперь в maintenance mode, советует перейти на java.time.

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

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

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

0

Большинство ответов были/были действительны. Новая модификация JAVA API для обработки даты помогла уменьшить некоторую более раннюю двусмысленность в обработке дат java.

Вы получите устаревшее сообщение для аналогичных вызовов.

new Date() // deprecated 

Приведенный выше вызов заставил разработчика предположить, что новый объект Date предоставит объект Date с текущей меткой времени. Это поведение несовместимо с другими классами Java API.

Новый способ сделать это с помощью Календарь Экземпляры.

new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime() 

Здесь также соглашение об именах не является совершенным, но это очень организовано. Для такого человека, как я, у которого есть трудное время, занимаясь делом, но никогда не забудет что-то, если оно звучит/кажется логичным, это хороший подход.

Это больше синонима реальной жизни

  1. Получает объект Calendar, и мы ищем время в нем. (вам должно быть интересно, что никакое тело не получает время из Календаря, поэтому я сказал, что оно не идеально. Но это совсем другая тема вообще)
  2. Затем мы хотим, чтобы дата была в простом текстовом формате, поэтому мы используем SimpleDateFormat, который помогает нам форматировать дату с шага 1. Я использовал yyyy, MM, dd в качестве параметров в формате. Supported date format parameters

Еще один способ сделать это с помощью Joda времени API

new DateTime().toString("yyyy-MM-dd") 

или столь очевидное

new DateTime(Calendar.getInstance().getTime()).toString("yyyy-MM-dd") 

оба будут возвращать один и тот же результат.

+0

FYI, неприятные старые классы времени, такие как ['java.util.Date'] (https://docs.oracle.com/javase/8/docs/api/java/util /Date.html), 'java.util.Calendar' и' java.text.SimpleTextFormat' теперь [legacy] (https://en.wikipedia.org/wiki/Legacy_system), вытесненные [java.time ] (https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html). Кроме того, проект [Joda-Time] (http://www.joda.org/joda-time/) теперь находится в [режиме обслуживания] (https://en.wikipedia.org/wiki/Maintenance_mode), с команда, предлагающая переход на java.time. –

+0

@BasilBourque Вот что я имел в виду в своем ответе, что главный проголосовавший ответ прав, но не имеет отношения к современному разработчику. Наконец, у java будет класс Clock, а Clock.getTime() будет гораздо более разумным и реалистичным, чем Date или DateTime или Time. Разработчики Java должны знать, что OOPS запускается как нечто, что имитирует реальные сценарии жизни. –

+0

FYI, реализация 'Clock' в Java 8 точно такая же, как и унаследованные классы. Только в Java 9 появляется новая реализация, способная зафиксировать текущий момент с разрешением как на наносекундах. –

-3
public static Date getDateByString(String dateTime) { 
     if(dateTime==null || dateTime.isEmpty()) { 
      return null; 
     } 
     else{ 
      String modified = dateTime + ".000+0000"; 
      DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
      Date dateObj = new Date(); 
      Date dateObj1 = new Date(); 
      try { 
       if (dateTime != null) { 
        dateObj = formatter.parse(modified); 
       } 

      } catch (ParseException e) { 
       e.printStackTrace(); 
      } 

      return dateObj; 
     } 

    } 
+0

Мы можем передать любой формат, который вы используете –

+1

Некоторые объяснения по поводу этого фрагмента кода, вероятно, будут полезными. – Pyves

+1

Ответ не относится к вопросу. И Нет, вы не можете передать дату в любом формате 'String' для вашей функции. –

1

Для времени, как YYYY-MM-DD

String time = new DateTime(yourData).toString("yyyy-MM-dd"); 

и библиотека DateTime является:

импорт org.joda.time.DateTime;

+0

А какая библиотека 'DateTime'? Ответ на переполнение стека должен иметь некоторое объяснение, поскольку этот сайт должен быть больше, чем библиотека фрагментов. –

Смежные вопросы