Как преобразовать текущую дату в строку в Java?
Как преобразовать текущую дату в строку в Java?
Ответы:
String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date());
// 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());
}
Взято отсюда
Calendar
желательнее Date
?
// On the form: dow mon dd hh:mm:ss zzz yyyy
new Date().toString();
Используйте DateFormat
реализацию; напр SimpleDateFormat
.
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String data = df.format(new Date());
LocalDate.now()
.toString()
2017-01-23
Лучше явно указать желаемый / ожидаемый часовой пояс.
LocalDate.now( ZoneId.of( "America/Montreal" ) )
.toString()
Современный способ, начиная с 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 8 и более поздних версий. Эти классы вытеснять неприятные старые устаревшие классы даты и времени , такие как java.util.Date
, Calendar
, и SimpleDateFormat
.
Проект Joda-Time , находящийся сейчас в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial . И поищите в Stack Overflow множество примеров и объяснений. Спецификация - JSR 310 .
Вы можете обмениваться объектами java.time напрямую с вашей базой данных. Используйте драйвер JDBC, совместимый с JDBC 4.2 или новее. Нет необходимости в строках, нет необходимости в java.sql.*
занятиях.
Где взять классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является испытательной площадкой для возможных будущих дополнений к java.time. Вы можете найти некоторые полезные классы здесь , такие как Interval
, YearWeek
, YearQuarter
, и более .
Быстрее :
String date = FastDateFormat.getInstance("dd-MM-yyyy").format(System.currentTimeMillis( ));
Для времени в формате ГГГГ-ММ-дд
String time = new DateTime( yourData ).toString("yyyy-MM-dd");
А библиотека DateTime:
import org.joda.time.DateTime;
DateTime
? В ответе на переполнение стека должно быть какое-то объяснение, так как этот сайт должен быть чем-то большим, чем библиотека сниппетов.
Большинство ответов верны. Новая модификация JAVA API для обработки даты позволила уменьшить некоторую ранее существовавшую двусмысленность в обработке даты Java.
Вы получите сообщение о том, что такие звонки не рекомендуются.
new Date() // deprecated
Вышеупомянутый вызов заставил разработчика предположить, что новый объект Date предоставит объект Date с текущей меткой времени. Такое поведение не согласуется с другими классами Java API.
Новый способ сделать это - использовать экземпляр календаря .
new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime()
Здесь тоже соглашение об именах не идеальное, но оно хорошо организовано. Для человека вроде меня, которому трудно что-то грабить, но который никогда ничего не забудет, если это звучит / кажется логичным, это хороший подход.
Это больше похоже на реальную жизнь
Еще один способ сделать это - использовать Joda time API.
new DateTime().toString("yyyy-MM-dd")
или гораздо очевиднее
new DateTime(Calendar.getInstance().getTime()).toString("yyyy-MM-dd")
оба вернут тот же результат.
java.util.Date
, java.util.Calendar
и java.text.SimpleTextFormat
теперь наследие , вытесняется java.time классов. Кроме того, проект Joda-Time теперь находится в режиме обслуживания , и команда советует перейти на java.time.
Clock
реализация в Java 8 точно такая же, как и у унаследованных классов. Только в Java 9 появилась новая реализация, способная фиксировать текущий момент с разрешением до наносекунд.
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;
}
}
String
формате в свою функцию.