English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Обработка даты Servlet

Одним из最重要的 преимуществ использования Servlet является возможность использования большинства доступных методов ядра Java. В этой главе будет рассмотрено, что предоставляет Java: java.util В пакете Date Класс, который封装яет текущую дату и время.

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

Date( )

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

Date(long millisec)

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

НомерМетод & описание
Неделя в месяцеboolean after(Date date)
Если дата, содержащаяся в вызываемом объекте Date, следует за датой, указанной в date, то возвращается true, в противном случае возвращается false.
2boolean before(Date date)
Если дата, содержащаяся в вызываемом объекте Date, предшествует дате, указанной в date, то возвращается true, в противном случае возвращается false.
3Object clone( )
Повторно вызывать объект Date.
4int compareTo(Date date)
Сравнить значение вызываемого объекта с значением date. Если два значения равны, вернуть 0. Если вызываемый объект находится перед date, вернуть отрицательное значение. Если вызываемый объект находится после date, вернуть положительное значение.
5int compareTo(Object obj)
Если obj является классом Date, то операция эквивалентна compareTo(Date). В противном случае, будет выброшен ClassCastException.
6boolean equals(Object date)
Вернуть true, если время и дата, содержащиеся в вызываемом объекте Date, такие же, как в date, в противном случае вернуть false.
7long getTime( )
Вернуть количество миллисекунд, прошедших с 1 января 1970 года.
8int hashCode( )
Вернуть хеш-код для вызываемого объекта.
9void setTime(long time)
Установить время и дату, указанные в time, что означает количество времени, прошедшего с полуночи 1 января 1970 года (в миллисекундах).
Часы с A.M./P.M. (0~11)String toString( )
Преобразовать вызываемый объект Date в строку и вернуть результат.

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

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

package com.w3codebox.test;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class CurrentDate
 */
@WebServlet("/CurrentDate")
public class CurrentDate extends HttpServlet {
    private static final long serialVersionUID = 1L;
   
    public CurrentDate() {
        super();
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
          String title = "显示当前的日期和时间";
        Date date = new Date();
        String docType = "<!DOCTYPE html> \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>");
    }
}

Теперь давайте соберем上面的 Servlet и создадим соответствующие записи в файле web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <servlet>
    <servlet-name>CurrentDate</servlet-name>
    <servlet-class>com.w3codebox.test.CurrentDate</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CurrentDate</servlet-name>
    <url-pattern>/TomcatTest/CurrentDate</url-pattern>
  </servlet-mapping>
</web-app>

Затем вызовите этот Servlet, посещая http://localhost:8080/TomcatTest/CurrentDate. Это приведет к следующим результатам:

Попробуйте обновить URL http://localhost:8080/TomcatTest/CurrentDate, и каждый раз, когда вы обновляете его через несколько секунд, вы会发现, что время показывается с различием.

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

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

  • Вы можете использовать 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 позволяет вам выбирать любое пользовательское форматирование даты и времени.

Давайте изменим пример, как показано ниже:

package com.w3codebox.test;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class CurrentDate
 */
@WebServlet("/CurrentDate")
public class CurrentDate extends HttpServlet {
    private static final long serialVersionUID = 1L;
   
    public CurrentDate() {
        super();
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        
        PrintWriter out = response.getWriter();
        String title = "显示当前的日期和时间";
        Date dNow = new Date( );
        SimpleDateFormat ft = 
                new SimpleDateFormat ("yyyy.MM.dd  hh:mm:ss E a ");
        String docType = "<!DOCTYPE html> \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>");
    }
}

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

简单的日期格式的格式代码

使用事件模式字符串来指定时间格式。在这种模式下,所有的 ASCII 字母被保留为模式字母,这些字母定义如下:

Простые коды формата датыИспользуйте строку шаблона событий для указания формата времени. В этом режиме все ASCII-символы сохраняются в качестве шаблонов, которые определены следующим образом:Символ
ОписаниеПримерG
Индикатор эрыADy
Четыре цифры года2001M
Месяц годаdЧасы с A.M./P.M. (0~11)
День месяцаhЧасы с A.M./P.M. (1~12)
12HЧас дня (0~23)
22mМинута в часе
30sСекунда в минуте
55SМиллисекунды
234EДень недели
TuesdayDДень года
360FНеделя в месяце
2 (вторник в июле)wНеделя года
40WНеделя в месяце
1aA.M./P.M. маркер
PMkЧас дня (1~24)
24KЧасы с A.M./P.M. (0~11)
10zЧасовой пояс
Eastern Standard TimeEscape for text
ДелimiterОдинарная кавычка

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