Java Дата и время
Давайте сначала разберемся с параметрами, которые состоят из Время.
В первую очередь он будет содержать –
- Команда год (2 или 4 цифры)
- Команда месяц (либо 2 цифры, первые 3 буквы месяца или все слово месяца).
- Команда даты (это будет фактическое число месяца).
- Команда день (день в указанную дату – например, воскресенье, понедельник, вторник и т. д.)
Что касается компьютерных систем, существует довольно много параметров, которые можно использовать для связи с датой. Мы увидим их в следующих частях этой темы.
Отображение даты в Java
Теперь давайте посмотрим, как Java сообщите нам дату. Сначала мы увидим, как получить текущую дату.
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: анализ и форматирование дат
Вы все, должно быть, выучили алфавит в детском саду….
Давайте теперь изучим азбуку формата даты.
Письмо | Компонент даты или времени | Примеры |
---|---|---|
G | Обозначение эпохи | AD |
y | Год | 2018 |
M | Месяц в году | июль или июль или 07 |
w | Неделя в году | 27 |
W | Неделя в месяц | 2 |
D | День в году | 189 |
d | День в месяце | 10 |
F | День недели в месяце | 2 |
E | Название дня недели | вторник или вторник |
u | Номер дня недели (1 = Monday, …, 7 = воскресенье) | 1 |
a | Маркер am / pm | PM |
H | Час в день (0-23) | 0 |
k | Час в день (1-24) | 24 |
K | Час в am / pm (0-11) | 0 |
h | Час в am / pm (1-12) | 12 |
m | Минута в час | 30 |
s | Секунда в минуту | 55 |
S | миллисекунды | 978 |
z | Часовой пояс | Тихоокеанское стандартное время; ТИХООКЕАНСКОЕ СТАНДАРТНОЕ ВРЕМЯ; GMT-08: 00 |
Z | Часовой пояс | -0800 |
X | Часовой пояс | -08 или -0800 или -08:00 |
Не волнуйтесь, вам не нужно запоминать все это, их можно использовать в любое время, когда вам понадобится отформатировать определенную дату.
Как использовать SimpleDateFormat?
Java предоставляет класс SimpleDateFormat, который позволяет вам форматировать и анализировать даты в соответствии с вашими требованиями.
Вы можете использовать приведенные выше символы для указания формата:
Например:
1) Требуемый формат даты: 2012.10.23 20:20:45 по тихоокеанскому стандартному времени
Соответствующий указанный формат даты будет: гггг.ММ.дд ЧЧ:мм:сс zzz
2) Требуемый формат даты:09:30:00 AM 23-May-2012
Соответствующий указанный формат даты будет:чч:мм:сс и дд-МММ-гггг
Наконечник: Будьте осторожны с заглавными буквами. Если вы перепутаете М с М, вы получите нежелательные результаты!
Давайте изучим это на примере кода.
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