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 ...
随机推荐
- 从单机到2000万 QPS 并发的 Redis 高性能缓存实践之路
1.引言 知乎存储平台团队基于开源Redis 组件打造的知乎 Redis 平台,经过不断的研发迭代,目前已经形成了一整套完整自动化运维服务体系,提供很多强大的功能.本文作者陈鹏是该系统的负责人,本次文 ...
- VBox虚拟机安装debian
决定在win7上装一个Linux虚拟机用作Linux开发学习,虽然win7下已经有了Cygwin,还是想在一个比较完整的环境下.前面装过Ubuntu发现界面太笨重了,考虑重新换一个,同时比较喜欢apt ...
- php常用的一些代码
1.获取用户真实ip function getIP() { if (getenv("HTTP_X_FORWARDED_FOR")) { // 这个提到最前面,作为优先级,nginx ...
- 1、QQ装机部落---腾讯软件
亲,赚钱快人一步,我给你推荐QQ装机部落!大品牌,口碑好,知名软件,绿色无毒,每天结算,回报高!到这里注册:http://zjbl.qq.com/#/?invid=476058088 返利网邀请码立即 ...
- Codeforces_789C_(dp)
C. Functions again time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- 迅速搞懂JavaScript正则表达式之方法
咱们来看看JavaScript中都有哪些操作正则的方法. RegExp RegExp 是正则表达式的构造函数. 使用构造函数创建正则表达式有多种写法: new RegExp('abc');// /ab ...
- js 判断访问终端类型
// 判断访问终端类型 var browser = { versions: function() { var u = navigator.userAgent, app = navigator.appV ...
- ajax 分页点击数据缓存
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Timer时钟(之一)
using System.Timers; static void Main(string[] args) { ThreadingTimer(); DateTime a = DateTime.Now; ...
- Git的入门
Git的基本介绍: Git:是一个版本控制工具. Github:是非常有名的在线版本管理网站(速度比较慢). Oschina:中国版本的github,(旗下的的码云地址:gitee.com,速度快) ...