使用Servlet的最重要的优势之一是,可以使用在核心Java中的大多数可用的方法。本在线教程将通过Java提供的日期类,java.util包中这个类封装了当前的日期和时间。
Date类支持两个构造函数。第一个构造函数初始化对象的当前日期和时间。
Date()
下面的构造函数接受一个参数,它等于1970年1月1日午夜以来经过的毫秒数
Date(long millisec)
一旦你有一个日期对象,你可以调用任何的支持方法使用日期:
SN | 方法和描述 |
---|---|
1 |
boolean after(Date date) 返回true,如果调用Date对象中包含的日期不迟于指定的日期,否则,返回false。 |
2 |
boolean before(Date date) 如果调用Date对象中包含的日期是早于指定的日期,则返回true,否则,返回false。 |
3 |
Object clone( ) 重复调用Date对象。 |
4 |
int compareTo(Date date) 与过期的调用对象的值进行比较。如果值是相等则返回0。如果调用对象是早于日期返回一个负的值。如果调用对象是最迟日期返回正值。 |
5 |
int compareTo(Object obj) 和compareTo(date)操作完全相同,如果obj是Date类。否则,它会抛出一个ClassCastException。 |
6 |
boolean equals(Object date) 返回true,如果调用Date对象包含一个指定的日期相同的日期和时间,否则,返回false。 |
7 |
long getTime( ) 返回1970年1月1日以来已经过的毫秒数。 |
8 |
int hashCode( ) Returns a hash code for the invoking object. |
9 |
void setTime(long time) 设置时间和日期,指定的时间,这代表从午夜经过的时间(以毫秒为单位)1970年1月1日 |
10 |
String toString( ) 调用Date对象转换成一个字符串并返回结果。 |
这是很简单的Java Servlet获取当前日期和时间。可以使用一个简单的Date对象的toString()方法,当前的日期和时间如下:
// 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中创建相应的条目,然后调用这个servlet,使用URL http://localhost:8080/CurrentDate。这将产生以下结果:
Display Current Date & TimeMon Jun 21 21:46:49 GMT+04:00 2010 |
尝试刷新URL http://localhost:8080/Current 在几秒钟内,你会发现差异。
正如上面提到的,可以在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接口和实现的日期。
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,然后再次调用这个servlet,使用URL http://localhost:8080/CurrentDate。这将产生以下结果:
Display Current Date & TimeMon 2010.06.21 at 10:06:44 PM GMT+04:00 |
要指定的时间格式,使用的时间模式字符串。在这种模式下,所有的ASCII字母被保留为模式字母,它被定义为以下:
Character | Description | Example |
---|---|---|
G | Era designator | AD |
y | Year in four digits | 2001 |
M | Month in year | July or 07 |
d | Day in month | 10 |
h | Hour in A.M./P.M. (1~12) | 12 |
H | Hour in day (0~23) | 22 |
m | Minute in hour | 30 |
s | Second in minute | 55 |
S | Millisecond | 234 |
E | Day in week | Tuesday |
D | Day in year | 360 |
F | Day of week in month | 2 (second Wed. in July) |
w | Week in year | 40 |
W | Week in month | 1 |
a | A.M./P.M. marker | PM |
k | Hour in day (1~24) | 24 |
K | Hour in A.M./P.M. (0~11) | 10 |
z | Time zone | Eastern Standard Time |
' | Escape for text | Delimiter |
" | Single quote | ` |
不变可用的方法来处理日期的完整列表,你可以参考标准的Java文档。