Класс java.util.Date - один из популярных классов. И использование даты часто включает манипулирование датой, такое как вычисление следующего дня и т.д.
Я часто слышал этот тип задач и решил обсудить их в статье. С появлением JDK 1.2, большинство методов в классе java.util.Date стали недооцениваться. Оставшиеся методы в основном используются для булевых сравнений, таких как является ли данная дата следующей за текущей датой и т.д. Однако, вы не можете выполнять арифметические операции с датой через эти методы.
Но как я могу сделать простую вещь типа вычисления завтрашней даты? Не сдавайтесь, есть способ - использование класса java.util.Calendar. Это абстрактный класс, который облегчает преобразование между объектом Date и набором целочисленных полей типа ГОДА, МЕСЯЦА, ДНЯ, и т.д.
Давайте рассмотрим типовую программу, которая вычисляет завтрашнюю дату.
import java.util.*;
/** Demonstrates the use of date manipulation. */
public class DateManipDemo {
/** Main. */
public static void main(String[] args) {
// Today's date
Date today = new Date();
// Print today's date
System.out.println("Today: " + today);
// Get the calendar
Calendar calendar = Calendar.getInstance();
// Set the calendar's time
calendar.setTime(today);
// Compute tommorrow's date
calendar.add(Calendar.DATE, 1);
// Get the manipulated date
Date tommorrow = calendar.getTime();
// Print tommorrow's date
System.out.println("Tommorrow: " + tommorrow);
}
}
Метод main() сначала получает текущую дату и печатает ее. Метод Calendar.getInstance() возвращает образец соответствующего подкласса календаря с текущей датой и временем. Таким образом, вы видите, что нет никакой необходимости вычислять сегодняшнюю дату, но я сделал это, чтобы показать, как установить время календаря в определенную дату. Затем мы вызываем, метод add() на календаре, который использует 2 параметра:
1. Поле, на котором выполнять арифметические операции
2. Количество добавлений
Так как мы хотим вычислить завтрашнюю дату, мы добавляем 1 к текущей дате. Затем вызываем метод getTime(), чтобы получить управляемую дату, которая является завтрашней датой.
Очевидный вопрос: "эй, как мне определить вчерашнюю дату? " Нет проблем. Просто передайте отрицательную величину во второй параметр метода add(). Просто, правда?
Я часто слышал этот тип задач и решил обсудить их в статье. С появлением JDK 1.2, большинство методов в классе java.util.Date стали недооцениваться. Оставшиеся методы в основном используются для булевых сравнений, таких как является ли данная дата следующей за текущей датой и т.д. Однако, вы не можете выполнять арифметические операции с датой через эти методы.
Но как я могу сделать простую вещь типа вычисления завтрашней даты? Не сдавайтесь, есть способ - использование класса java.util.Calendar. Это абстрактный класс, который облегчает преобразование между объектом Date и набором целочисленных полей типа ГОДА, МЕСЯЦА, ДНЯ, и т.д.
Давайте рассмотрим типовую программу, которая вычисляет завтрашнюю дату.
import java.util.*;
/** Demonstrates the use of date manipulation. */
public class DateManipDemo {
/** Main. */
public static void main(String[] args) {
// Today's date
Date today = new Date();
// Print today's date
System.out.println("Today: " + today);
// Get the calendar
Calendar calendar = Calendar.getInstance();
// Set the calendar's time
calendar.setTime(today);
// Compute tommorrow's date
calendar.add(Calendar.DATE, 1);
// Get the manipulated date
Date tommorrow = calendar.getTime();
// Print tommorrow's date
System.out.println("Tommorrow: " + tommorrow);
}
}
Метод main() сначала получает текущую дату и печатает ее. Метод Calendar.getInstance() возвращает образец соответствующего подкласса календаря с текущей датой и временем. Таким образом, вы видите, что нет никакой необходимости вычислять сегодняшнюю дату, но я сделал это, чтобы показать, как установить время календаря в определенную дату. Затем мы вызываем, метод add() на календаре, который использует 2 параметра:
1. Поле, на котором выполнять арифметические операции
2. Количество добавлений
Так как мы хотим вычислить завтрашнюю дату, мы добавляем 1 к текущей дате. Затем вызываем метод getTime(), чтобы получить управляемую дату, которая является завтрашней датой.
Очевидный вопрос: "эй, как мне определить вчерашнюю дату? " Нет проблем. Просто передайте отрицательную величину во второй параметр метода add(). Просто, правда?