Servlet - 日期
-
简述
使用 Servlet 的最重要优势之一是您可以使用核心 Java 中可用的大多数方法。本教程将带您了解所提供的 JavaDate 可用的类 java.util package,这个类封装了当前的日期和时间。Date 类支持两个构造函数。第一个构造函数使用当前日期和时间初始化对象。Date( )
以下构造函数接受一个参数,该参数等于自 1970 年 1 月 1 日午夜以来经过的毫秒数Date(long millisec)
一旦你有一个可用的 Date 对象,你可以调用以下任何支持方法来处理日期 -序号 方法和说明 1 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)将调用对象的值与日期的值进行比较。如果值相等,则返回 0。如果调用对象早于日期,则返回负值。如果调用对象晚于日期,则返回正值。5 int compareTo(Object obj)如果 obj 属于 Date 类,则操作与 compareTo(Date) 相同。否则,它会抛出 ClassCastException。6 boolean equals(Object date)如果调用 Date 对象包含与 date 指定的时间和日期相同的时间和日期,则返回 true,否则返回 false。7 long getTime( )返回自 1970 年 1 月 1 日以来经过的毫秒数。8 int hashCode( )返回调用对象的哈希码。9 void setTime(long time)设置 time 指定的时间和日期,time 表示从 1970 年 1 月 1 日午夜起经过的时间(以毫秒为单位)。10 String toString( )将调用 Date 对象转换为字符串并返回结果。 -
获取当前日期和时间
这很容易在 Java Servlet 中获取当前日期和时间。您可以使用带有toString()方法的简单 Date 对象来打印当前日期和时间,如下所示 -// 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>" ); } }
现在让我们编译上面的 servlet 并在 web.xml 中创建适当的条目,然后使用 URL http://localhost:8080/CurrentDate 调用这个 servlet。这将产生以下结果 -Mon Jun 21 21:46:49 GMT+04:00 2010
尝试刷新 URL http://localhost:8080/CurrentDate,您会发现每次刷新时都以秒为单位的差异。 -
日期比较
正如我上面提到的,您可以在 Servlet 中使用所有可用的 Java 方法。如果您需要比较两个日期,以下是方法 --
您可以使用 getTime( ) 获取两个对象自 1970 年 1 月 1 日午夜以来经过的毫秒数,然后比较这两个值。
-
你可以使用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>" ); } }
再次编译上面的 servlet,然后使用 URL http://localhost:8080/CurrentDate 调用这个 servlet。这将产生以下结果 -Mon 2010.06.21 at 10:06:44 PM GMT+04:00
-
简单的 DateFormat 格式代码
要指定时间格式,请使用时间模式字符串。在此模式中,所有 ASCII 字母都保留为模式字母,其定义如下 -特点 描述 例子 G 他是指定人 AD y 四位数年份 2001 M 一年中的一个月 July or 07 d 一个月中的一天 10 h 上午/下午的小时 (1~12) 12 H 一天中的小时 (0~23) 22 m 一小时一分钟 30 s 秒 55 S 毫秒 234 E 一周中的一天 Tuesday D 一年中的一天 360 F 一个月中的星期几 2 (second Wed. in July) w 一年中的一周 40 W 一个月中的一周 1 a 上午/下午标记 PM k 一天中的小时 (1~24) 24 K 上午/下午的小时 (0~11) 10 z 时区 东部标准时间 ' 转义文本 分隔符 " 反引号 ` 有关操作日期的常量可用方法的完整列表,您可以参考标准 Java 文档。