1. 1、获取服务器端当前日期: <%@ page import="java.util.Date"%> <% Date myDate = new Date(); %> 
  2.  
  3. 2、获取当前年、月、日: <%@ page import="java.util.Date"%> <% Date myDate = new Date(); int thisYear = myDate.getYear() + 1900;//thisYear = 2003 int thisMonth = myDate.getMonth() + 1;//thisMonth = 5 int thisDate = myDate.getDate();//thisDate = 30 %> 
  4.  
  5. 3、按本地时区输出当前日期 <%@ page import="java.util.Date"%> <% Date myDate = new Date(); out.println(myDate.toLocaleString()); %> 输出结果为: 2003-5-30  
  6.  
  7. 4、获取数据库中字段名为"publish_time"、类型为Datetime的值 <%@ page import="java.util.Date"%> <% ...连接数据库... ResultSet rs = ... Date sDate = rs.getDate("publish_time"); %> 
  8.  
  9. 5、按照指定格式打印日期 <%@ page import="java.util.Date"%> <%@ page import="java.text.DateFormat"%> <% Date dNow = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("E yyyy.MM.dd at hh:mm:ss a zzz"); out.println("It is " + formatter.format(dNow)); %> 输出的结果为: It is 星期五 2003.05.30 at 11:30:46 上午 CST (更为详尽的格式符号请参看SimpleDateFormat类)  
  10.  
  11. 6、将字符串转换为日期 <%@ page import="java.util.Date"%> <%@ page import="java.text.DateFormat"%> <% String input = "1222-11-11"; SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); Date t = null; try...{ t = formatter.parse(input); out.println(t); }catch(ParseException e)...{ out.println("unparseable using" + formatter); } %> 输出结果为: Fri Nov 11 00:00:00 CST 1222  
  12.  
  13. 7、日期的加减运算 方法:用Calendar类的add()方法 <%@ page import="java.util.*"%> <%@ page import="java.text.*"%> <% Calendar now = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat("E yyyy.MM.dd at hh:mm:ss a zzz"); out.println("It is now " + formatter.format(now.getTime())); now.add(Calendar.DAY_OF_YEAR,-(365*2)); out.println("<br>"); out.println("Two years ago was " + formatter.format(now.getTime())); %> 输出结果为: It is now 星期五 2003.05.30 at 01:45:32 下午 CST Two years ago was 星期三 2001.05.30 at 01:45:32 下午 CST  
  14.  
  15. 8、比较日期方法:用equals()、before()、after()方法 <%@ page import="java.util.*"%> <%@ page import="java.text.*"%> <% DateFormat df = new SimpleDateFormat("yyy-MM-dd"); Date d1 = df.parse("2000-01-01"); Date d2 = df.parse("1999-12-31"); String relation = null; if(d1.equals(d2)) relation = "the same date as"; else if(d1.before(d2)) relation = "before"; else relation = "after"; out.println(d1 +" is " + relation + + d2); %> 输出结果为: Sat Jan 01 00:00:00 CST 2000 is after Fri Dec 31 00:00:00 CST 1999  
  16.  
  17. 9、记录一件事所花费的时间方法:调用两次System.getTimeMillis()方法,求差值 <%@ page import="java.text.*"%> <% long t0,t1; t0 = System.currentTimeMillis(); out.println("Cyc starts at " + t0); int k = 0; for(int i =0;i<100000;i++) t1 = System.currentTimeMillis(); out.println("<br>"); out.println("Cyc ends at " + t1); out.println("<br>"); out.println("This run took " + (t1-t0) + "ms."); %> 输出结果为: Cyc starts at 1054275312432 Cyc ends at 1054275312442 This run took 10ms.  
  18.  
  19. 10:如何格式化小数 <%@ page import="java.text.*"%> <% DecimalFormat df = new DecimalFormat(",###.00"); double aNumber = 33665448856.6568975; String result = df.format(aNumber); out.println(result); %> 输出结果为: 33,665,448,856.66  
  20.  
  21. Java日期常用类:  
  22.  
  23.  
  24. Java.util.TimeZone:  
  25. 时区TimeZone类,即java.util.TimeZone类的实例包含了一个与格林威治标准时间(GMT)相比较得出的以微秒为单位的时区偏移量,而且它还处理夏令时。要获得一个所有支持的进区的列表,你可以使用方法TimeZone.getAvailableIDs,它将返回一个包含了所有进区ID的字符串数组。要知道关于TimeZone类的更多细节,可以参看API文档。  
  26.  
  27. Java.util.Calendar:  
  28. Calender是一个抽象类,所以不能实例化,只能用它所提供的静态方法  
  29. Calendar c = Calendar.getInstance();  
  30. System.out.println(c.getTime());  
  31. 输出如下:Tue May 29 12:57:36 CST 2007  
  32. 有四种方式可以得到Calendar的实例对象  
  33. (1)public static Calendar getInstance()//默认方式:以本地的时区和地区来构造Calendar,实际上调用的是(4)的方法。  
  34. (2)public static Calendar getInstance(TimeZone zone)//以时区来构造Calendar  
  35. (3)public static Calendar getInstance(Locale aLocale)//以地区构造Calendar  
  36. (4)public static Calendar getInstance(TimeZone zone, Locale aLocale)//以地区构造Calendar  
  37. 可以用DateFormat类来对日期进行格式化的显示,如下的代码所示:  
  38. System.out.println(DateFormat.getDateInstance().format(c.getTime()));  
  39. 输出为2007-5-29;  
  40. 由于DateFormat也是一个抽象类,所以只能用getDateInstance()然后调用format(Date date)对日期进行格式化,  
  41. 从这里可以看出format的参数是Date,现在的Date的作用其实就是进行一个中转,一般而言用Calendar对日期进行操作就足够了,Date不建议使用,它的好多方法都不建议使用了。  
  42.  
  43. DateFomate的参数有好几种格式:  
  44. public static final int FULL = 0;  
  45.  
  46. public static final int LONG = 1;  
  47.  
  48. public static final int MEDIUM = 2;  
  49.  
  50. public static final int SHORT = 3;  
  51.  
  52. public static final int DEFAULT = MEDIUM;  
  53.  
  54. 默认输出是MEDIUM,也就是上面的输出2007-5-29。  
  55. DateFormat df = DateFormat.getDateInstance(DateFormat.FULL);  
  56. System.out.println(df.format(c.getTime()));  
  57. 格式是FULL,输出为:2007年5月29日 星期二,当然了,默认是以本地的时区和地区输出的  
  58.  
  59.  
  60.  
  61.  
  62. Java.util. GregorianCalendar:  
  63. 该类是Java.util.Calendar的子类,可以化GregorianCalendar得到某天的日期对象  
  64. //某年某月的第一天  
  65. GregorianCalendar firstDay=new GregorianCalendar(new Integer(year).intValue(),new Integer(month).intValue()-1,1);  
  66.  
  67. //该月下个月的第一天  
  68. GregorianCalendar nextFirstDay=new GregorianCalendar(new Integer(year).intValue(),new Integer(month).intValue()-1,1);  
  69. nextFirstDay.add(GregorianCalendar.MONTH, 1);  
  70.  
  71. //该月最后一天(不必管每月多少天了)  
  72. GregorianCalendar lastDay=new GregorianCalendar(new Integer(year).intValue(),new Integer(month).intValue()-1,1);  
  73. lastDay.add(GregorianCalendar.MONTH, 1);  
  74. lastDay.add(GregorianCalendar.DATE, -1);  
  75. 示范如下:  
  76. /以今天为例  
  77. GregorianCalendar today = new GregorianCalendar(2007,4,29);  
  78. System.out.println(today.getTime());  
  79. //下个月的今天  
  80. today.add(today.MONTH, 1);  
  81. System.out.println(today.getTime());  
  82. //该月的最后一天  
  83. GregorianCalendar gc = new GregorianCalendar(2007,4,1);  
  84. gc.add(gc.MONDAY, -1);  
  85. gc.add(GregorianCalendar.DATE, -1);  
  86. System.out.println(gc.getTime());  
  87.  
  88. 输出如下:  
  89. Tue May 29 00:00:00 CST 2007  
  90. Fri Jun 29 00:00:00 CST 2007  
  91. Sat Mar 31 00:00:00 CST 2007  
  92.  
  93.  
  94. java.util.Date和java.sql.Date的区别及应用  
  95. java.util.Date 就是在除了SQL语句的情况下面使用  
  96. java.sql.Date 是针对SQL语句使用的,它只包含日期而没有时间部分  
  97. 它都有getTime方法返回毫秒数,自然就可以直接构建  
  98. java.util.Date d = new java.util.Date(sqlDate.getTime());  
  99. ...  
  100. --------------------------------------------------------------------------------  
  101. java.util.Date 是 java.sql.Date 的父类(注意拼写)  
  102. 前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他  
  103. 后者之后在读写数据库的时候用他,因为PreparedStament的setDate()的第2参数和ResultSet的getDate()方法的第2个参数都是java.sql.Date  
  104. 转换是  
  105. java.sql.Date date=new Java.sql.Date();  
  106. java.util.Date d=new java.util.Date (date.getTime());  
  107. 反过来是一样的  
  108. --------------------------------------------------------------------------------  
  109. 继承关系:java.lang.Object --》 java.util.Date --》 java.sql.Date  
  110. 具体的转换关系就是java.util.Date d=new java.util.Date (new Java.sql.Date());  
  111. --------------------------------------------------------------------------------  
  112. sql.date,一般是在数据库的时间字段,util.date一般是日常日期字段  
  113. --------------------------------------------------------------------------------  
  114. java.sql.Date主要是用于sql中的!  
  115. 而java.util.Date用语一般的环境下都行!  
  116. --------------------------------------------------------------------------------  
  117. SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");  
  118. java.util.Date utilDate=new Date();   
  119. java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());   
  120. java.sql.Time sTime=new java.sql.Time(utilDate.getTime());   
  121. java.sql.Timestamp stp=new java.sql.Timestamp(utilDate.getTime());  
  122. System.out.println(utilDate.getYear());  
  123. 这里所有时间日期都可以被SimpleDateFormat格式化format()  
  124. f.format(stp);f.format(sTime);f.format(sqlDate);f.format(utilDate)  
  125. java.sql.Date sqlDate=java.sql.Date.valueOf("2005-12-12");  
  126.  
  127. utilDate=new java.util.Date(sqlDate.getTime());  
  128. --------------------------------------------------------------------------------------------------  
  129. 另类取得年月日的方法:  
  130. import java.text.SimpleDateFormat;  
  131. import java.util.*;  
  132. java.util.Date date = new java.util.Date();  
  133. //如果希望得到YYYYMMDD的格式  
  134. SimpleDateFormat sy1=new SimpleDateFormat("yyyyMMDD");  
  135. String dateFormat=sy1.format(date);  
  136. //如果希望分开得到年,月,日  
  137. SimpleDateFormat sy=new SimpleDateFormat("yyyy");  
  138. SimpleDateFormat sm=new SimpleDateFormat("MM");  
  139. SimpleDateFormat sd=new SimpleDateFormat("dd");  
  140. String sysyear=sy.format(date);  
  141. String smsmon=sm.format(date);  
  142. String sdsday=sd.format(date);  
  143.  
  144.  
  145. 为什么java.sql.Date类型的值插入到数据库中Date字段中会发生数据截取呢?  
  146. java.sql.Date是为了配合SQL DATE而设置的数据类型。“规范化”的java.sql.Date只包含年月日信息,时分秒毫秒都会清零。格式类似:YYYY-MM-DD。当我们调用 ResultSet的getDate()方法来获得返回值时,java程序会参照"规范"的java.sql.Date来格式化数据库中的数值。因此,如果数据库中存在的非规范化部分的信息将会被劫取。  
  147. 同理。如果我们把一个java.sql.Date值通过PrepareStatement的setDate方法存入数据库时,java程序会对传入的 java.sql.Date规范化,非规范化的部分将会被劫取。然而,我们java.sql.Date一般由java.util.Date转换过来,如:java.sql.Date sqlDate=new java.sql.Date(new java.util.Date().getTime()).  
  148. 显然,这样转换过来的java.sql.Date往往不是一个规范的java.sql.Date.要保存java.util.Date的精确值,我们需要利用java.sql.Timestamp.  
  149.  
  150.  
  151. 常用日期处理示例代码:  
  152. import java.sql.Timestamp;  
  153. import java.text.ParseException;  
  154. import java.text.SimpleDateFormat;  
  155. import java.util.Calendar;  
  156. import java.util.Date;  
  157.  
  158.  
  159. public class TestDate {  
  160. Calendar c=Calendar.getInstance();  
  161. public static void main(String[] args){  
  162. //取系统当前时间  
  163. Calendar c=Calendar.getInstance();  
  164. System.out.println(c.getTime());  
  165. //取系统时间  
  166. Date d=new Date();  
  167. System.out.println(d);  
  168. //将字符串型转为Timestamp型  
  169. String s="2008-9-13 05:07:00";  
  170. Timestamp ta=Timestamp.valueOf(s);  
  171. System.out.println(ta);  
  172. //日期格式化  
  173. SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");  
  174. Timestamp ts=new Timestamp(System.currentTimeMillis());  
  175. String str=sdf.format(ts);  
  176. System.out.println(str);  
  177. //将字符串转换为java.sql.Date  
  178. String s1="2008-09-01";  
  179. java.sql.Date d1=java.sql.Date.valueOf(s1);  
  180. System.out.println(s1);  
  181. //将字符串转换为java.util.Date  
  182. String s2=sdf.format(new Date());  
  183. Date d2=null;  
  184. try {  
  185. d2 = sdf.parse(s2);  
  186. } catch (ParseException e) {  
  187. // TODO Auto-generated catch block  
  188. e.printStackTrace();  
  189. }  
  190. System.out.println(d2);  
  191. //将java.sql.Date转换为java.util.Date  
  192. java.sql.Date d3=new java.sql.Date(System.currentTimeMillis());  
  193. Date d4=new Date(d3.getTime());  
  194. System.out.println(d4);  
  195. //将java.util.Date转换为java.sql.Date  
  196. Date d5=new Date();  
  197. java.sql.Date d6=new java.sql.Date(d5.getTime());  
  198. System.out.println(d6);  
  199.  
  200. }  
  201. }