Дата и время Java:SimpleDateFormat, текущая дата и сравнение
В этом уроке вы узнаете –
- Отображение текущей даты в Java
- SimpleDateFormat:разбор и форматирование дат
- Пример сравнения дат
Давайте сначала разберемся с параметрами, состоящими из даты. .
В основном он будет содержать –
- год (двумя или четырьмя цифрами)
- месяц (двумя цифрами, первыми тремя буквами месяца или целым словом месяца).
- дата (это будет фактическое число месяца).
- День (день в указанную дату – например, вс, пн, вт и т. д.)
Что касается компьютерных систем, то существует довольно много параметров, которые можно использовать для связи с датой. Мы увидим их в следующих частях этой темы.
Отображение даты в Java
Теперь давайте посмотрим, как Java предоставляет нам Date. Во-первых, мы увидим, как получить текущую дату-
Java предоставляет класс Date в пакете java.util. Пакет предоставляет несколько методов для работы с датой.
Вы можете использовать объект Date, вызвав конструктор класса Date следующим образом:
import java.util.Date;
class Date_Ex1 {
public static void main(String args[]) {
// Instantiate a Date object by invoking its constructor
Date objDate = new Date();
// Display the Date & Time using toString()
System.out.println(objDate.toString());
}
} Вывод:
Wed Nov 29 06:36:22 UTC 2017
В приведенном выше примере дата показана в формате по умолчанию. Если мы хотим показать дату и время в другом формате, сначала разберитесь с форматированием даты.
SimpleDateFormat:анализ и форматирование дат
Вы все, должно быть, выучили алфавит в детском саду….
Давайте теперь изучим азбуку формата даты.
| Письмо | Компонент даты или времени | Примеры |
|---|---|---|
| Г | Обозначение эпохи | ОБЪЯВЛЕНИЕ |
| г | Год | 2018 |
| М | Месяц в году | Июль или июль или 07 |
| в | Неделя в году | 27 |
| В | Неделя в месяце | 2 |
| Д | День в году | <тд>189тд>|
| д | День в месяце | <тд>10тд>|
| Ф | День недели в месяце | 2 |
| Е | Название дня недели | Вторник или вторник |
| у | Номер дня недели (1 =понедельник, …, 7 =воскресенье) | <тд>1тд>|
| а | Маркер утра/вечера | PM |
| Н | Час в сутках (0-23) | <тд>0тд>|
| к | Час в сутках (1-24) | <тд>24тд>|
| К | Час в am/pm (0-11) | <тд>0тд>|
| ч | Час в am/pm (1-12) | 12 |
| м | Минута в часе | 30 |
| s | Секунда в минуту | <тд>55тд>|
| С | Миллисекунды | 978 |
| г | Часовой пояс | Тихоокеанское стандартное время; ТИХООКЕАНСКОЕ СТАНДАРТНОЕ ВРЕМЯ; GMT-08:00 |
| Я | Часовой пояс | <тд>-0800тд>|
| Х | Часовой пояс | -08 или -08:00 или -08:00 |
Не волнуйтесь, вам не нужно запоминать все это, к ним можно обратиться в любое время, когда вам нужно отформатировать конкретную дату.
Как использовать SimpleDateFormat?
Java предоставляет класс SimpleDateFormat, который позволяет вам форматировать и анализировать даты в соответствии с вашими требованиями.
Вы можете использовать указанные выше символы для указания формата-
Например:
1) Требуемый формат даты:2012.10.23 20:20:45 PST
Соответствующий указанный формат даты будет следующим:гггг.ММ.дд ЧЧ:мм:сс ззз
2) Требуется формат даты:09:30:00 23 мая 2012 г.
Соответствующий указанный формат даты будет следующим:чч:мм:сс и дд-МММ-гггг
Совет: Будьте осторожны с заглавными буквами. Если вы перепутаете M с m, вы получите нежелательные результаты!
Давайте изучим это на примере кода.
import java.text.SimpleDateFormat;
import java.util.Date;
class TestDates_Format {
public static void main(String args[]) {
Date objDate = new Date(); // Current System Date and time is assigned to objDate
System.out.println(objDate);
String strDateFormat = "hh:mm:ss a dd-MMM-yyyy"; //Date format is Specified
SimpleDateFormat objSDF = new SimpleDateFormat(strDateFormat); //Date format string is passed as an argument to the Date format object
System.out.println(objSDF.format(objDate)); //Date formatting is applied to the current date
}
} Вывод:
Wed Nov 29 06:31:41 UTC 2017 06:31:41 AM 29-Nov-2017
Пример сравнения дат
Самый полезный метод сравнения дат — использовать метод — compareTo()
Давайте взглянем на приведенный ниже фрагмент кода —
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;
class TestDates_Compare {
public static void main(String args[]) throws ParseException {
SimpleDateFormat objSDF = new SimpleDateFormat("dd-mm-yyyy");
Date dt_1 = objSDF.parse("20-08-1981");
Date dt_2 = objSDF.parse("12-10-2012");
System.out.println("Date1 : " + objSDF.format(dt_1));
System.out.println("Date2 : " + objSDF.format(dt_2));
if (dt_1.compareTo(dt_2) > 0) {
System.out.println("Date 1 occurs after Date 2");
} // compareTo method returns the value greater than 0 if this Date is after the Date argument.
else if (dt_1.compareTo(dt_2) < 0) {
System.out.println("Date 1 occurs before Date 2");
} // compareTo method returns the value less than 0 if this Date is before the Date argument;
else if (dt_1.compareTo(dt_2) == 0) {
System.out.println("Both are same dates");
} // compareTo method returns the value 0 if the argument Date is equal to the second Date;
else {
System.out.println("You seem to be a time traveller !!");
}
}
} Вывод:
Date1 : 20-08-1981 Date2 : 12-10-2012 Date 1 occurs before Date 2
java