English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Одним из最重要的 преимуществ использования Servlet является возможность использования большинства доступных методов ядра Java. В этой главе будет рассмотрено, что предоставляет Java: java.util В пакете Date Класс, который封装яет текущую дату и время.
Класс Date поддерживает два конструктора. Первый конструктор инициализирует объект с текущей датой и временем.
Date( )
Ниже приведены конструкторы, принимающие один параметр, равный числу миллисекунд, прошедших с полуночи 1 января 1970 года.
Date(long millisec)
Как только у вас есть доступный объект Date, вы можете вызвать любое из следующих методов для использования даты:
Номер | Метод & описание |
---|---|
Неделя в месяце | boolean after(Date date) Если дата, содержащаяся в вызываемом объекте Date, следует за датой, указанной в date, то возвращается true, в противном случае возвращается false. |
2 | boolean before(Date date) Если дата, содержащаяся в вызываемом объекте Date, предшествует дате, указанной в date, то возвращается true, в противном случае возвращается false. |
3 | Object clone( ) Повторно вызывать объект Date. |
4 | int compareTo(Date date) Сравнить значение вызываемого объекта с значением date. Если два значения равны, вернуть 0. Если вызываемый объект находится перед date, вернуть отрицательное значение. Если вызываемый объект находится после date, вернуть положительное значение. |
5 | int compareTo(Object obj) Если obj является классом Date, то операция эквивалентна compareTo(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 года (в миллисекундах). |
Часы с 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 позволяет вам выбирать любое пользовательское форматирование даты и времени.
Давайте изменим пример, как показано ниже:
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 |
Индикатор эры | AD | y |
Четыре цифры года | 2001 | M |
Месяц года | d | Часы с A.M./P.M. (0~11) |
День месяца | h | Часы с A.M./P.M. (1~12) |
12 | H | Час дня (0~23) |
22 | m | Минута в часе |
30 | s | Секунда в минуте |
55 | S | Миллисекунды |
234 | E | День недели |
Tuesday | D | День года |
360 | F | Неделя в месяце |
2 (вторник в июле) | w | Неделя года |
40 | W | Неделя в месяце |
1 | a | A.M./P.M. маркер |
PM | k | Час дня (1~24) |
24 | K | Часы с A.M./P.M. (0~11) |
10 | z | Часовой пояс |
Eastern Standard Time | Escape for text | |
Делimiter | Одинарная кавычка |
Чтобы увидеть полный список доступных методов обработки даты, вы можете обратиться к стандартной документации Java.