0

Как получить сегодняшнюю дату?

14

Я сталкиваюсь с проблемой при попытке установить время у объекта java.util.Date на полночь, подобно тому, как это делается в Joda-Time с помощью следующего кода:

today = today.withTime(0, 0, 0, 0);

Однако я хочу добиться этого без использования Joda-Time, полагаясь только на класс java.util.Date. Методы, такие как .setHours() и другие, устарели и не рекомендуются к использованию. Существует ли более корректный способ для решения данной задачи?

5 ответ(ов)

0

Верно, методы класса 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();

Таким образом, вы получите дату с обнулённым временем, избегая использования устаревших методов.

0

Если вам нужно получить полночь (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();
0

Чтобы получить дату и время в формате, подобном "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());

Этот код также вернёт дату и время в аналогичном формате.

0

Чтобы легко получить дату и время в 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 в строку в указанном формате. Выводится результат в консоль.

0

Как получить сегодняшнюю дату в заданном формате

Вы можете определить нужный формат, создав экземпляр 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/2018
  • xdayFromTodaysDate = -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;
    }
}

Этот код позволяет вам получать даты как в будущем, так и в прошлом, на основе текущей даты или заданной даты.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь