Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Java — Дата и время

Java предоставляет Дату класс доступен в java.util package, этот класс инкапсулирует текущую дату и время.

Класс Date поддерживает два конструктора, как показано в следующей таблице.

<тд>

Дата( )

Этот конструктор инициализирует объект текущими датой и временем.

<тд>

Дата (длинные миллисекунды)

Этот конструктор принимает аргумент, равный количеству миллисекунд, прошедших с полуночи 1 января 1970 года.

Сер.№ Конструктор и описание
1
2

Ниже приведены методы класса даты.

<тд>

логическое значение после(Дата дата)

Возвращает true, если вызывающий объект Date содержит более позднюю дату, чем дата, указанная в параметре date, в противном случае возвращает false.

<тд>

логическое значение до(Дата дата)

Возвращает true, если вызывающий объект Date содержит более раннюю дату, чем дата, указанная в параметре date, в противном случае возвращает false.

<тд>

Клон объекта()

Дублирует вызываемый объект Date.

<тд>

int compareTo(Дата дата)

Сравнивает значение вызывающего объекта со значением даты. Возвращает 0, если значения равны. Возвращает отрицательное значение, если вызываемый объект предшествует дате. Возвращает положительное значение, если вызывающий объект старше даты.

<тд>

int compareTo(Объект объекта)

Работает так же, как и compareTo(Date), если obj относится к классу Date. В противном случае выдается исключение ClassCastException.

<тд>

логическое равенство (дата объекта)

Возвращает значение true, если вызывающий объект Date содержит то же время и дату, что и указанный в параметре date, в противном случае возвращает значение false.

<тд>

длинный getTime()

Возвращает количество миллисекунд, прошедших с 1 января 1970 года.

<тд>

целый хэш-код()

Возвращает хэш-код вызывающего объекта.

<тд>

аннулировать setTime(длительное время)

Устанавливает время и дату в соответствии с параметром time, который представляет прошедшее время в миллисекундах с полуночи 1 января 1970 года.

<тд>

Строка toString()

Преобразует вызываемый объект Date в строку и возвращает результат.

Сер.№ Метод и описание
1
2
3
4
5
6
7
8
9
10

Получение текущей даты и времени

Это очень простой способ получить текущую дату и время в Java. Вы можете использовать простой объект Date с toString() метод для печати текущей даты и времени следующим образом —

Пример

Живая демонстрация
import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();

      // display time and date using toString()
      System.out.println(date.toString());
   }
}

Это даст следующий результат —

Вывод

on May 04 09:51:52 CDT 2009

Сравнение дат

Ниже приведены три способа сравнения двух дат —

Форматирование даты с использованием SimpleDateFormat

SimpleDateFormat — это конкретный класс для форматирования и анализа дат с учетом региональных настроек. SimpleDateFormat позволяет начать с выбора любых пользовательских шаблонов для форматирования даты и времени.

Пример

Живая демонстрация
import java.util.*;
import java.text.*;

public class DateDemo {

   public static void main(String args[]) {
      Date dNow = new Date( );
      SimpleDateFormat ft = 
      new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");

      System.out.println("Current Date: " + ft.format(dNow));
   }
}

Это даст следующий результат —

Вывод

Current Date: Sun 2004.07.18 at 04:14:09 PM PDT

Простые коды формата DateFormat

Чтобы указать формат времени, используйте строку шаблона времени. В этом шаблоне все буквы ASCII зарезервированы как буквы шаблона, которые определяются следующим образом —

<тд>10 <тд>55 <тд>40 <тд>1 <тд>24 <тд>10 <тд>`
Символ Описание Пример
Г Обозначение эпохи ОБЪЯВЛЕНИЕ
г Год в четырехзначном формате 2001
М Месяц в году Июль или 07
д День в месяце
ч Час в A.M./P.M. (1~12) 12
Н Час в сутках (0~23) 22
м Минута в часе 30
s Секунда в минуту
С Миллисекунды 234
Е День недели Вторник
Д День в году 360
Ф День недели в месяце 2 (вторая среда июля)
в Неделя в году
В Неделя в месяце
а A.M./P.M. маркер PM
к Час в сутках (1~24)
К Час в A.M./P.M. (0~11)
г Часовой пояс Восточное стандартное время
' Escape для текста Разделитель
" Одинарная кавычка

Форматирование даты с помощью printf

Форматирование даты и времени можно очень легко выполнить с помощью printf. метод. Вы используете двухбуквенный формат, начинающийся с t и заканчивается одной из букв таблицы, как показано в следующем коде.

Пример

Живая демонстрация
import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();

      // display time and date
      String str = String.format("Current Date/Time : %tc", date );

      System.out.printf(str);
   }
}

Это даст следующий результат —

Вывод

Current Date/Time : Sat Dec 15 16:37:57 MST 2012

Было бы немного глупо, если бы вам приходилось указывать дату несколько раз для форматирования каждой части. По этой причине строка формата может указывать индекс форматируемого аргумента.

Индекс должен следовать сразу за % и заканчиваться символом $.

Пример

Живая демонстрация
import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();
  
      // display time and date
      System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date);
   }
}

Это даст следующий результат —

Вывод

Due date: February 09, 2004

Кроме того, вы можете использовать флаг <. Он указывает, что тот же аргумент, что и в предыдущей спецификации формата, следует использовать снова.

Пример

Живая демонстрация
import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();
  
      // display formatted date
      System.out.printf("%s %tB %<te, %<tY", "Due date:", date);
   }
}

Это даст следующий результат —

Вывод

Due date: February 09, 2004

Символы преобразования даты и времени

<тд>02 <тд>03 <тд>9 <тд>-0800
Символ Описание Пример
c Заполните дату и время Пн, 04 мая, 09:51:52 CDT 2009
Ф Дата ISO 8601 2004-02-09
Д США дата в формате (месяц/день/год) 09.02.2004
Т 24-часовое время 18:05:19
р 12 часов 18:05:19
Р 24-часовое время, без секунд 18:05
Д Четырехзначный год (с ведущими нулями) 2004
y Последние две цифры года (с ведущими нулями) 04
C Первые две цифры года (с ведущими нулями) 20
Б Полное название месяца Февраль
b Сокращенное название месяца Фев
м Двузначный месяц (с ведущими нулями)
д Двузначный день (с ведущими нулями)
е Двузначный день (без ведущих нулей)
А Полное название дня недели Понедельник
а Сокращенное название дня недели Пн
j Трехзначный день года (с ведущими нулями) 069
H Час из двух цифр (с ведущими нулями), между 00 и 23 18
k Час из двух цифр (без ведущих нулей), от 0 до 23 18
Я Час из двух цифр (с ведущими нулями), между 01 и 12 06
l Час из двух цифр (без ведущих нулей), от 1 до 12 6
M Минуты из двух цифр (с ведущими нулями) 05
S Двузначное число секунд (с ведущими нулями) 19
L Три цифры в миллисекундах (с ведущими нулями) 047
Н Девять цифр в наносекундах (с ведущими нулями) 047000000
P Утренний или дневной маркер в верхнем регистре PM
p Маркер утра или дня в нижнем регистре вечер
г Числовое смещение RFC 822 от GMT
Я Часовой пояс PST
s Секунды с 01.01.1970 00:00:00 по Гринвичу 1078884319
В Миллисекунды с 01.01.1970 00:00:00 по Гринвичу 1078884319047

Существуют и другие полезные классы, связанные с датой и временем. Дополнительные сведения см. в документации стандарта Java.

Разбор строк в даты

Класс SimpleDateFormat имеет несколько дополнительных методов, в частности parse(), который пытается проанализировать строку в соответствии с форматом, сохраненным в данном объекте SimpleDateFormat.

Пример

Живая демонстрация
import java.util.*;
import java.text.*;
  
public class DateDemo {

   public static void main(String args[]) {
      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); 
      String input = args.length == 0 ? "1818-11-11" : args[0]; 

      System.out.print(input + " Parses as "); 
      Date t;
      try {
         t = ft.parse(input); 
         System.out.println(t); 
      } catch (ParseException e) { 
         System.out.println("Unparseable using " + ft); 
      }
   }
}

Пример запуска вышеуказанной программы даст следующий результат —

Вывод

1818-11-11 Parses as Wed Nov 11 00:00:00 EST 1818

Поспать немного

Вы можете спать в течение любого периода времени от одной миллисекунды до срока службы вашего компьютера. Например, следующая программа будет спать 3 секунды —

Пример

Живая демонстрация
import java.util.*;
public class SleepDemo {

   public static void main(String args[]) {
      try { 
         System.out.println(new Date( ) + "\n"); 
         Thread.sleep(5*60*10); 
         System.out.println(new Date( ) + "\n"); 
      } catch (Exception e) {
         System.out.println("Got an exception!"); 
      }
   }
}

Это даст следующий результат —

Вывод

Sun May 03 18:04:41 GMT 2009
Sun May 03 18:04:51 GMT 2009

Измерение прошедшего времени

Иногда вам может понадобиться измерить момент времени в миллисекундах. Итак, давайте еще раз перепишем приведенный выше пример —

Пример

Живая демонстрация
import java.util.*;
public class DiffDemo {

   public static void main(String args[]) {
      try {
         long start = System.currentTimeMillis( );
         System.out.println(new Date( ) + "\n");
         
         Thread.sleep(5*60*10);
         System.out.println(new Date( ) + "\n");
         
         long end = System.currentTimeMillis( );
         long diff = end - start;
         System.out.println("Difference is : " + diff);
      } catch (Exception e) {
         System.out.println("Got an exception!");
      }
   }
}

Это даст следующий результат —

Вывод

Sun May 03 18:16:51 GMT 2009
Sun May 03 18:16:57 GMT 2009
Difference is : 5993

Класс GregorianCalendar

GregorianCalendar — это конкретная реализация класса Calendar, которая реализует обычный григорианский календарь, с которым вы знакомы. В этом руководстве мы не обсуждали класс Calendar, для этого вы можете посмотреть стандартную документацию по Java.

getInstance() Метод Calendar возвращает GregorianCalendar, инициализированный текущей датой и временем в локали и часовом поясе по умолчанию. GregorianCalendar определяет два поля:AD и BC. Они представляют собой две эпохи, определенные григорианским календарем.

Есть также несколько конструкторов для объектов GregorianCalendar —

<тд>

Григорианский календарь()

Создает GregorianCalendar по умолчанию, используя текущее время в часовом поясе по умолчанию с локалью по умолчанию.

<тд>

Григорианский календарь(целый год, int месяц, int дата)

Создает GregorianCalendar с заданной датой, установленной в часовом поясе по умолчанию с локалью по умолчанию.

<тд>

Григорианский календарь (целый год, целочисленный месяц, целая дата, целые часы, целые минуты)

Создает GregorianCalendar с заданными датой и временем, установленными для часового пояса по умолчанию с локалью по умолчанию.

<тд>

Григорианский календарь(год, месяц, дата, час, минута, секунда)

Создает GregorianCalendar с заданными датой и временем, установленными для часового пояса по умолчанию с локалью по умолчанию.

<тд>

Григорианский календарь (язык и язык)

Создает GregorianCalendar на основе текущего времени в часовом поясе по умолчанию с заданной локалью.

<тд>

Григорианский календарь (часовой пояс)

Создает GregorianCalendar на основе текущего времени в заданном часовом поясе с языковым стандартом по умолчанию.

<тд>

Григорианский календарь (зона часового пояса, языковой стандарт aLocale)

Создает GregorianCalendar на основе текущего времени в заданном часовом поясе с заданной локалью.

Сер.№ Конструктор и описание
1
2
3
4
5
6
7

Вот список нескольких полезных методов поддержки, предоставляемых классом GregorianCalendar —

<тд>

void add(целое поле, целое количество)

Добавляет указанное (со знаком) количество времени в указанное поле времени на основе правил календаря.

<тд>

защищенное пустое вычисление полей()

Преобразует время в формате UTC в миллисекундах в значения поля времени.

<тд>

защищенное пустое вычислениеTime()

Переопределяет календарь. Преобразует значения поля времени в формат UTC в миллисекундах.

<тд>

логическое равенство (объект obj)

Сравнивает этот GregorianCalendar со ссылкой на объект.

<тд>

целое получить(целое поле)

Получает значение для заданного поля времени.

<тд>

int getActualMaximum(целое поле)

Возвращает максимальное значение, которое может иметь это поле на текущую дату.

<тд>

int getActualMinimum(целое поле)

Возвращает минимальное значение, которое может иметь это поле, учитывая текущую дату.

<тд>

int getGreatestMinimum(целое поле)

Возвращает максимальное минимальное значение для данного поля, если оно варьируется.

<тд>

Дата getGregorianChange()

Получает дату изменения григорианского календаря.

<тд>

int getLeastMaximum(целое поле)

Возвращает наименьшее максимальное значение для данного поля, если изменяется.

<тд>

int getMaximum(целое поле)

Возвращает максимальное значение для данного поля.

<тд>

Дата getTime()

Получает текущее время этого календаря.

<тд>

длинный getTimeInMillis()

Получает текущее время этого календаря в формате long.

<тд>

Часовой пояс getTimeZone()

Получает часовой пояс.

<тд>

int getMinimum(целое поле)

Возвращает минимальное значение для данного поля.

<тд>

целый хэш-код()

Переопределяет хэш-код.

<тд>

boolean isLeapYear(целый год)

Определяет, является ли данный год високосным.

<тд>

void roll(int field, boolean up)

Добавляет или вычитает (вверх/вниз) одну единицу времени в указанном поле времени без изменения больших полей.

<тд>

недействительный набор(целое поле, целое значение)

Устанавливает поле времени с заданным значением.

<тд>

недействительный набор(целое число год, целое число месяц, целая дата)

Задает значения для полей года, месяца и даты.

<тд>

недействительный набор(год, месяц, дата, час, минута)

Задает значения для полей года, месяца, даты, часа и минуты.

<тд>

недействительный набор(год, месяц, дата, час, минута, секунда)

Задает значения для полей года, месяца, даты, часа, минуты и секунды.

<тд>

void setGregorianChange(Date date)

Устанавливает дату изменения GregorianCalendar.

<тд>

аннулировать setTime(Дата Дата)

Устанавливает текущее время этого календаря с заданной датой.

<тд>

void setTimeInMillis(длинные миллисекунды)

Устанавливает текущее время этого календаря из заданного длинного значения.

<тд>

void setTimeZone (значение часового пояса)

Устанавливает часовой пояс с заданным значением часового пояса.

<тд>

Строка toString()

Возвращает строковое представление этого календаря.

Сер.№ Метод и описание
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

Пример

Живая демонстрация
import java.util.*;
public class GregorianCalendarDemo {

   public static void main(String args[]) {
      String months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", 
         "Oct", "Nov", "Dec"};
      
      int year;
      // Create a Gregorian calendar initialized
      // with the current date and time in the
      // default locale and timezone.
      
      GregorianCalendar gcalendar = new GregorianCalendar();
      
      // Display current time and date information.
      System.out.print("Date: ");
      System.out.print(months[gcalendar.get(Calendar.MONTH)]);
      System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
      System.out.println(year = gcalendar.get(Calendar.YEAR));
      System.out.print("Time: ");
      System.out.print(gcalendar.get(Calendar.HOUR) + ":");
      System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
      System.out.println(gcalendar.get(Calendar.SECOND));

      // Test if the current year is a leap year
      if(gcalendar.isLeapYear(year)) {
         System.out.println("The current year is a leap year");
      }else {
         System.out.println("The current year is not a leap year");
      }
   }
}

Это даст следующий результат —

Вывод

Date: Apr 22 2009
Time: 11:25:27
The current year is not a leap year

Полный список констант, доступных в классе Calendar, можно найти в стандартной документации по Java.


java

  1. Класс и объект С#
  2. Как получить текущую дату и время в Python?
  3. Переменные и литералы Java
  4. Java-выражения, операторы и блоки
  5. Java-класс и объекты
  6. Абстрактный класс Java и абстрактные методы
  7. Вложенный и внутренний класс Java
  8. Одноэлементный класс Java
  9. Java бросает и бросает
  10. Автоупаковка и распаковка Java