Сервлеты - Дата обработки

Одним из наиболее важных преимуществ использования сервлета является то, что вы можете использовать большинство методов, доступных в ядре Java. В этом руководстве вы познакомитесь с предоставленной JavaDate класс, который доступен в java.util package этот класс инкапсулирует текущую дату и время.

Класс Date поддерживает два конструктора. Первый конструктор инициализирует объект текущими датой и временем.

Date( )

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

Date(long millisec)

Когда у вас есть доступный объект Date, вы можете вызвать любой из следующих методов поддержки, чтобы поиграть с датами:

Sr. No. Методы и описание
1

boolean after(Date date)

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

2

boolean before(Date date)

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

3

Object clone( )

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

4

int compareTo(Date date)

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

5

int compareTo(Object obj)

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

6

boolean equals(Object date)

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

7

long getTime( )

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

8

int hashCode( )

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

9

void setTime(long time)

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

10

String toString( )

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

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

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

// Import required java libraries
import java.io.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
 
// Extend HttpServlet class
public class CurrentDate extends HttpServlet {
 
   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // Set response content type
      response.setContentType("text/html");
 
      PrintWriter out = response.getWriter();
      String title = "Display Current Date & Time";
      Date date = new Date();
      String docType = "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
      
      out.println(docType +
         "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor = \"#f0f0f0\">\n" +
               "<h1 align = \"center\">" + title + "</h1>\n" +
               "<h2 align = \"center\">" + date.toString() + "</h2>\n" +
            "</body>
         </html>"
      );
   }
}

Теперь давайте скомпилируем указанный выше сервлет и создадим соответствующие записи в web.xml, а затем вызовем этот сервлет, используя URL-адрес http: // localhost: 8080 / CurrentDate. Это даст следующий результат -

Display Current Date & Time

Mon Jun 21 21:46:49 GMT+04:00 2010

Попробуйте обновить URL-адрес http: // localhost: 8080 / CurrentDate, и вы обнаружите разницу в секундах при каждом обновлении.

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

Как я упоминал выше, вы можете использовать все доступные методы Java в своем сервлете. Если вам нужно сравнить две даты, следующие методы:

  • Вы можете использовать getTime () для получения количества миллисекунд, прошедших с полуночи 1 января 1970 года для обоих объектов, а затем сравнить эти два значения.

  • Вы можете использовать методы before (), after () и equals (). Поскольку 12-е число месяца предшествует 18-му, например, new Date (99, 2, 12) .before (new Date (99, 2, 18)) возвращает true.

  • Вы можете использовать метод compareTo (), который определяется интерфейсом Comparable и реализуется Date.

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

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

Давайте изменим приведенный выше пример следующим образом -

// Import required java libraries
import java.io.*;
import java.text.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
 
// Extend HttpServlet class
public class CurrentDate extends HttpServlet {
 
   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // Set response content type
      response.setContentType("text/html");
 
      PrintWriter out = response.getWriter();
      String title = "Display Current Date & Time";
      Date dNow = new Date( );
      SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
      String docType = "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
      
      out.println(docType +
         "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor = \"#f0f0f0\">\n" +
               "<h1 align = \"center\">" + title + "</h1>\n" +
               "<h2 align = \"center\">" + ft.format(dNow) + "</h2>\n" +
            "</body>
         </html>"
      );
   }
}

Скомпилируйте указанный выше сервлет еще раз, а затем вызовите этот сервлет, используя URL-адрес http: // localhost: 8080 / CurrentDate. Это даст следующий результат -

Display Current Date & Time

Mon 2010.06.21 at 10:06:44 PM GMT+04:00

Коды простого формата DateFormat

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

символ Описание пример
г Обозначение эпохи ОБЪЯВЛЕНИЕ
у Год в четырех цифрах 2001 г.
M Месяц в году Июль или 07
d День в месяце 10
час Час в AM / PM (1 ~ 12) 12
ЧАС Час в день (0 ~ 23) 22
м Минута в час 30
s Секунда в минуту 55
S Миллисекунды 234
E День в неделю вторник
D День в году 360
F День недели в месяце 2 (вторая среда июля)
ш Неделя в году 40
W Неделя в месяц 1
а AM / PM маркер ВЕЧЕРА
k Час в день (1 ~ 24) 24
K Час в AM / PM (0 ~ 11) 10
z Часовой пояс Восточное стандартное время
' Escape для текста Разделитель
" Одиночная цитата `

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