Servlet处理日期

以下内容引用自http://wiki.jikexueyuan.com/project/servlet/handling-date.html

使用Servlet的最重要的优势之一是可以使用核心Java中的大多数可用的方法,Java提供的Date类,该类在java.util包中是可用的,这个类封装了当前的日期和时间。

Date类支持两个构造函数。第一个构造函数用当前日期和时间初始化对象。

Date( )

下面的构造函数接受一个参数,该参数等于自1970年1月1日凌晨零点以来经过的毫秒数。

Date(long millisec)

一旦得到一个可用的Date对象,可以调用下列任意支持的方法来使用日期:

方法 描述

boolean after(Date date)


如果调用的Date对象中包含的日期在date指定的日期之后,则返回true,否则返回false。


boolean before(Date date)


如果调用的Date对象中包含的日期在date指定的日期之前,则返回true,否则返回false。


Object clone( )


重复调用Date对象。


int compareTo(Date date)


把调用对象的值与date的值进行比较。如果两个值是相等的,则返回0。如果调用对象在date之前,则返回一个负值。如果调用对象在date之后,则返回一个正值。


int compareTo(Object obj)


如果obj是Date类,则操作等同于compareTo(Date)。否则,它会抛出一个ClassCastException。


boolean equals(Object date)


如果调用的Date对象中包含的时间和日期与date指定的相同,则返回true,否则返回false。


long getTime( )


返回1970年1月1日以来经过的毫秒数。


int hashCode( )


为调用对象返回哈希代码。


void setTime(long time)


设置time指定的时间和日期,这表示从1970年1月1日凌晨零点以来经过的时间(以毫秒为单位)。


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>");
  }
}

配置web.xml:

    <servlet>
        <servlet-name>CurrentDate</servlet-name>
        <servlet-class>com.jsoft.testservletbasics.CurrentDate</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CurrentDate</servlet-name>
        <url-pattern>/CurrentDate</url-pattern>
    </servlet-mapping>

现在,编译上述Servlet并在web.xml文件中创建适当的条目,然后使用URL http://localhost:8080/CurrentDate来调用该Servlet。这将会产生如下所示的结果:

尝试刷新URLhttp://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。这将会产生如下所示的结果:

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

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

字符 描述 实例
G 时代指示器 AD
y 四位数的年 2001
M 一年中的月 July 或 07
d 一月中的第几天 10
h 带有 A.M./P.M. 的小时(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 A.M./P.M. 标记 PM
k 一天中的第几小时(1~24) 24
K 带有 A.M./P.M. 的小时(0~11) 10
z 时区 Eastern Standard Time
Escape for text 分隔符
" 单引号 `

处理日期方法的可用方法的完整列表,可以参考标准的Java文档。

测试工程:https://github.com/easonjim/5_java_example/tree/master/servletbasics/test12

时间: 2024-10-12 17:51:55

Servlet处理日期的相关文章

Servlet 教程

Servlet 教程Servlet 为创建基于 web 的应用程序提供了基于组件.独立于平台的方法,可以不受 CGI 程序的性能限制.Servlet 有权限访问所有的 Java API,包括访问企业级数据库的 JDBC API.本教程将讲解如何使用 Java Servlet 来开发基于 web 的应用程序.现在开始学习 Servlet!谁适合阅读本教程?本教程是专为 Java 程序员设计的.在阅读本教程之前,需要先了解 Java Servlet 框架和它的 API.学习完本教程后,您会发现自己已

Servlet 教程 各个知识点简单概括

Servlet 教程 http://www.ziqiangxuetang.com/servlet/servlet-cookies-handling.html Servlet 教程 Servlet 教程 Servlet 简介 Servlet 环境设置 Servlet 生命周期 Servlet 实例 Servlet 表单数据 Servlet 客户端HTTP 请求 Servlet 服务器 HTTP 响应 Servlet HTTP 状态码 Servlet 编写过滤器 Servlet 异常处理 Servl

Servlet连接数据库及日期格式转换

package oracleFactory; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.text.SimpleDateF

Servlet之cookie处理

Cookies 通常设置在 HTTP 头信息中(虽然JavaScript 也可以直接在浏览器上设置一个 Cookie).设置 Cookie 的 Servlet 会发送如下的头信息: HTTP/1.1 200 OK Date: Fri, 04Feb 2000 21:03:38 GMT Server:Apache/1.3.9 (UNIX) PHP/4.0b3 Set-Cookie: name=xyz; expires=Friday, 04-Feb-0722:03:38 GMT; path=/; do

Java通过jxl解析Excel文件入库,及日期格式处理方式 (附源代码)

JAVA可以利用jxl简单快速的读取文件的内容,但是由于版本限制,只能读取97-03  xls格式的Excel. 本文是项目中用到的一个实例,先通过上传xls文件(包含日期),再通过jxl进行读取上传的xls文件(文件格式见下user.xls),解析不为空的行与列,写入数据库. 文件user.xls格式为: 下面来看代码实例演示: 一.前端jsp页面(本来内容很多,这里精简了) <%@ page language="java" contentType="text/htm

第三天:Servlet运行原理

1.  如何不重启tomcat就可以重新加载一个web应用?? 方法:进入tomcat的manager之后点击reload即可. 2.开发一个Servlet,该Servlet可以输出自己的名字并显示当前的日期. A.在tomcat中的webapps下面建立相关目录,web.xml配置文件和output.java类 B.编写output.java文件 C.在web.xml中部署该web应用 D.编译该output.java E.在浏览器中测试 3.Servlet的生命周期(Servlet究竟是怎样

Servlet&amp;jsp基础:第四部分

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接: http://www.cnblogs.com/jiangzhengjun/p/4289315.html 会话与状态管理... 58 cookie. 58 组成... 58 Set-Cookie2响应头... 59 Cookie请求头... 60 在Servlet中使用Cookie. 61 Cookie类... 61 构

Servlet&amp;jsp基础:第二部分

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接: HttpServletResponse. 20 产生响应状态行... 20 HTTP状态常量... 20 setStatus(int sc)20 sendError21 构建响应消息头... 21 addHeader与setHeader21 addIntHeader与setIntHeader21 addDateHead

javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据. Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式. 这里以一个最常用的用户登录注册程序来讲解Servlet+JSP+JavaBean开发模式,通过这个用户登录注册程序综合案例,把之前的学过的XML.Xpat