Как получить сегодняшнюю дату?
Я сталкиваюсь с проблемой при попытке установить время у объекта java.util.Date
на полночь, подобно тому, как это делается в Joda-Time с помощью следующего кода:
today = today.withTime(0, 0, 0, 0);
Однако я хочу добиться этого без использования Joda-Time, полагаясь только на класс java.util.Date
. Методы, такие как .setHours()
и другие, устарели и не рекомендуются к использованию. Существует ли более корректный способ для решения данной задачи?
5 ответ(ов)
Верно, методы класса Date
, такие как setHours()
, более не рекомендуются к использованию, так как они устарели. Вместо этого вы можете воспользоваться классом Calendar
, который предоставляет более удобные и безопасные методы для работы с датами.
Вот пример того, как можно обнулить часы, минуты и секунды текущей даты с помощью Calendar
:
Calendar today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 0); // Устанавливаем часы в 0
today.set(Calendar.MINUTE, 0); // Устанавливаем минуты в 0
today.set(Calendar.SECOND, 0); // Устанавливаем секунды в 0
today.set(Calendar.MILLISECOND, 0); // Устанавливаем миллисекунды в 0
Если в итоге вам нужен объект типа Date
, просто вызовите метод getTime()
:
Date date = today.getTime();
Таким образом, вы получите дату с обнулённым временем, избегая использования устаревших методов.
Если вам нужно получить полночь (00:00) для текущей даты, вы можете использовать конструктор по умолчанию и обнулить части времени:
Date today = new Date();
today.setHours(0); today.setMinutes(0); today.setSeconds(0);
Правка: обновите использование Calendar
, так как указанные методы устарели.
Calendar today = Calendar.getInstance();
today.clear(Calendar.HOUR); today.clear(Calendar.MINUTE); today.clear(Calendar.SECOND);
Date todayDate = today.getTime();
Чтобы получить дату и время в формате, подобном "Feb 5, 2013 12:39:02 PM" на Java, вы можете использовать следующий код:
String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
Этот код создаёт строку, представляющую текущую дату и время, используя стандартный формат даты и времени. В результате будет получена строка, подобная "Feb 5, 2013 12:39:02 PM".
Если необходимо изменить формат, вы можете использовать SimpleDateFormat
, чтобы настроить вывод в соответствии с вашими потребностями. Вот пример с использованием SimpleDateFormat
:
import java.text.SimpleDateFormat;
import java.util.Calendar;
SimpleDateFormat sdf = new SimpleDateFormat("MMM d, yyyy hh:mm:ss a");
String mydate = sdf.format(Calendar.getInstance().getTime());
Этот код также вернёт дату и время в аналогичном формате.
Чтобы легко получить дату и время в Java, вы можете использовать следующий код:
package date.time;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTime {
public static void main(String[] args) {
SimpleDateFormat dnt = new SimpleDateFormat("dd/MM/yy :: HH:mm:ss");
Date date = new Date();
System.out.println("Сегодняшняя дата и время сейчас: " + dnt.format(date));
}
}
Этот код использует класс SimpleDateFormat
для форматирования текущей даты и времени. Формат "dd/MM/yy :: HH:mm:ss" означает, что вы получите день, месяц и год, а также часы, минуты и секунды. Метод format
класса SimpleDateFormat
преобразует объект Date
в строку в указанном формате. Выводится результат в консоль.
Как получить сегодняшнюю дату в заданном формате
Вы можете определить нужный формат, создав экземпляр SimpleDateFormat
, чтобы получить дату в этом формате:
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
String todaysdate = dateFormat.format(date);
System.out.println("Today's date : " + todaysdate);
Смотрите ниже ссылки, чтобы узнать о допустимых комбинациях форматов дат:
Документация по SimpleDateFormat
Код: Получение даты, находящейся на x дней вперед или назад от сегодняшней даты
Например:
- Сегодняшняя дата: 27/11/2018
xdayFromTodaysDate = 2
— дата будет 29/11/2018xdayFromTodaysDate = -2
— дата будет 25/11/2018
public String getAniversaryDate(int xdayFromTodaysDate) {
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH, xdayFromTodaysDate);
date = cal.getTime();
String aniversaryDate = dateFormat.format(date);
LOGGER.info("Today's date : " + todaysdate);
return aniversaryDate;
}
Код: Получение даты, находящейся на x дней вперед или назад от заданной даты
public String getAniversaryDate(String givendate, int xdayFromTodaysDate) {
Calendar cal = Calendar.getInstance();
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
try {
Date date = dateFormat.parse(givendate);
cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH, xdayFromTodaysDate);
date = cal.getTime();
String aniversaryDate = dateFormat.format(date);
LOGGER.info("aniversaryDate : " + aniversaryDate);
return aniversaryDate;
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
Этот код позволяет вам получать даты как в будущем, так и в прошлом, на основе текущей даты или заданной даты.
Сортировка ArrayList пользовательских объектов по свойству
Как получить текущую дату и время в UTC или GMT в Java?
Java 8 – Создание Instant из LocalDateTime с учетом часового пояса
Android: Как получить дату за 7 дней назад (одна неделя)?
Вычисление дней, часов и минут между двумя моментами времени