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
Servlet处理日期的更多相关文章
- Servlet 处理日期
使用 Servlet 的最重要的优势之一是,可以使用核心 Java 中的大多数可用的方法.本章将讲解 Java 提供的 java.util 包中的 Date 类,这个类封装了当前的日期和时间. Dat ...
- Servlet 教程 各个知识点简单概括
Servlet 教程 http://www.ziqiangxuetang.com/servlet/servlet-cookies-handling.html Servlet 教程 Servlet 教程 ...
- Servlet 教程——检视阅读
Servlet 教程--检视阅读 参考 Servlet教程--菜鸟--蓝本 Servlet教程--w3cschool Servlet教程--易百 servlet依赖maven依赖: <!--se ...
- Servlet连接数据库及日期格式转换
package oracleFactory; import java.io.IOException; import java.io.PrintWriter; import java.sql.Conne ...
- 使用Servlet和JSP实现一个简单的Web聊天室系统
1 问题描述 利用Java EE相关技术实现一个简单的Web聊天室系统,具体要求如下. (1)编写一个登录 ...
- Struts2中Date日期转换的问题
今天跑程序的时候莫名其妙的出现了下面的一个异常: java.lang.NoSuchMethodException:com.ca.agent.model.mybatis.ApprovalInforC ...
- Java Servlet规范
截自网址:http://blog.csdn.net/u010391029/article/details/46521051 JavaServlet Specification Version 2.3 ...
- <<< web里面Servlet高级应用的基础介绍
Servlet中的页面跳转?两种方式,实现跳转:内部跳转(请求转发).外部跳转(重定向)内部跳转(请求转发)特点:在服务器内部完成页面之间的跳转:请求只有一次:浏览器地址不会改变.request.ge ...
- MyEclipse配置Tomcat开发JavaWeb程序JSP以及Servlet
1.安装准备 1).下载安装MyEclipse2014,这已经是最新版本. 2).下载Tomcat 官网:http://tomcat.apache.org/ 我们选择8.0: http://tomca ...
随机推荐
- Android开发-下载网络图片并显示到本地
Android下载网络图片的流程是: 发送网络请求->将图片以流的形式下载下来->将流转换为Bitmap并赋给ImageView控件. 注意点 最新的Android系统不可以在主线程上请求 ...
- TNS-00511: 无监听程序
这里到服务里面打开 tns 的监听服务
- 基于ANGULAR.JS的下一代WEB应用开发-01-yeoman
Angularjs 个人认为这是一款很好的框架!它将我们从AJAX应用的开发中解救了出来!嗯....废话就说道这里下面我们开始把! 首先我们必须了解一些核心的概念: 客户端模版 MVC 数据绑定 依赖 ...
- swift potocol 作为参量时函数的派发顺序
1.检查protocol本体是否声明调用函数: 2.如果没有,检查protocol扩展是否有该函数:如果扩展中也没有,报错: 3.如果本体声明了函数,使用动态派发机制进行派发:扩展中的实现位于最末位.
- 在Swift中定义属于自己的运算符
precedencegroup ChainingPrecedence { associativity: left higherThan: TernaryPrecedence } infix opera ...
- CREATE TRIGGER - 定义一个新的触发器
SYNOPSIS CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] } ON table [ FOR [ EACH ] { ROW | ...
- ascii - 在八进制,十进制,十六进制中的 ASCII 字符集编码
描述 ASCII 是美国对于信息交换的标准代码,它是7位码,许多8位码(比如 ISO 8859-1, Linux 的默认字符集)容纳 ASCII 作为它们的下半部分.对应的国际 ASSII 是 ISO ...
- MYSQL之错误代码----mysql错误代码与JAVA实现
原文地址:MYSQL之错误代码----mysql错误代码与JAVA实现作者:戒定慧 his chapter lists the errors that may appear when you call ...
- JVM内存管理及垃圾回收机制
一.JVM内存组成结构 JVM栈由堆.栈.本地方法栈.方法区等部分组成,结构图如下所示: 二.JVM内存回收 Sun的JVMGenerationalCollecting(垃圾回收)原理是这样的:把对 ...
- Layui框架 中table解决日期格式问题
使用templet自定义模板(详细查看官方文https://www.layui.com) 1.对Date的扩展,将 Date 转化为指定格式的String ,创建一个js文件: (dataForma ...