java date时间相关处理

 
  1. 1、获取服务器端当前日期:<%@pageimport="java.util.Date"%><%DatemyDate=newDate();%>
  2. 2、获取当前年、月、日:<%@pageimport="java.util.Date"%><%DatemyDate=newDate();intthisYear=myDate.getYear()+1900;//thisYear=2003intthisMonth=myDate.getMonth()+1;//thisMonth=5intthisDate=myDate.getDate();//thisDate=30%>
  3. 3、按本地时区输出当前日期<%@pageimport="java.util.Date"%><%DatemyDate=newDate();out.println(myDate.toLocaleString());%>输出结果为:2003-5-30
  4. 4、获取数据库中字段名为"publish_time"、类型为Datetime的值<%@pageimport="java.util.Date"%><%...连接数据库...ResultSetrs=...DatesDate=rs.getDate("publish_time");%>
  5. 5、按照指定格式打印日期<%@pageimport="java.util.Date"%><%@pageimport="java.text.DateFormat"%><%DatedNow=newDate();SimpleDateFormatformatter=newSimpleDateFormat("Eyyyy.MM.ddathh:mm:ssazzz");out.println("Itis"+formatter.format(dNow));%>输出的结果为:Itis星期五2003.05.30at11:30:46上午CST(更为详尽的格式符号请参看SimpleDateFormat类)
  6. 6、将字符串转换为日期<%@pageimport="java.util.Date"%><%@pageimport="java.text.DateFormat"%><%Stringinput="1222-11-11";SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-dd");Datet=null;try...{t=formatter.parse(input);out.println(t);}catch(ParseExceptione)...{out.println("unparseableusing"+formatter);}%>输出结果为:FriNov1100:00:00CST1222
  7. 7、日期的加减运算方法:用Calendar类的add()方法<%@pageimport="java.util.*"%><%@pageimport="java.text.*"%><%Calendarnow=Calendar.getInstance();SimpleDateFormatformatter=newSimpleDateFormat("Eyyyy.MM.ddathh:mm:ssazzz");out.println("Itisnow"+formatter.format(now.getTime()));now.add(Calendar.DAY_OF_YEAR,-(365*2));out.println("<br>");out.println("Twoyearsagowas"+formatter.format(now.getTime()));%>输出结果为:Itisnow星期五2003.05.30at01:45:32下午CSTTwoyearsagowas星期三2001.05.30at01:45:32下午CST
  8. 8、比较日期方法:用equals()、before()、after()方法<%@pageimport="java.util.*"%><%@pageimport="java.text.*"%><%DateFormatdf=newSimpleDateFormat("yyy-MM-dd");Dated1=df.parse("2000-01-01");Dated2=df.parse("1999-12-31");Stringrelation=null;if(d1.equals(d2))relation="thesamedateas";elseif(d1.before(d2))relation="before";elserelation="after";out.println(d1+"is"+relation++d2);%>输出结果为:SatJan0100:00:00CST2000isafterFriDec3100:00:00CST1999
  9. 9、记录一件事所花费的时间方法:调用两次System.getTimeMillis()方法,求差值<%@pageimport="java.text.*"%><%longt0,t1;t0=System.currentTimeMillis();out.println("Cycstartsat"+t0);intk=0;for(inti=0;i<100000;i++)t1=System.currentTimeMillis();out.println("<br>");out.println("Cycendsat"+t1);out.println("<br>");out.println("Thisruntook"+(t1-t0)+"ms.");%>输出结果为:Cycstartsat1054275312432Cycendsat1054275312442Thisruntook10ms.
  10. 10:如何格式化小数<%@pageimport="java.text.*"%><%DecimalFormatdf=newDecimalFormat(",###.00");doubleaNumber=33665448856.6568975;Stringresult=df.format(aNumber);out.println(result);%>输出结果为:33,665,448,856.66
  11. Java日期常用类:
  12. Java.util.TimeZone:
  13. 时区TimeZone类,即java.util.TimeZone类的实例包含了一个与格林威治标准时间(GMT)相比较得出的以微秒为单位的时区偏移量,而且它还处理夏令时。要获得一个所有支持的进区的列表,你可以使用方法TimeZone.getAvailableIDs,它将返回一个包含了所有进区ID的字符串数组。要知道关于TimeZone类的更多细节,可以参看API文档。
  14. Java.util.Calendar:
  15. Calender是一个抽象类,所以不能实例化,只能用它所提供的静态方法
  16. Calendarc=Calendar.getInstance();
  17. System.out.println(c.getTime());
  18. 输出如下:TueMay2912:57:36CST2007
  19. 有四种方式可以得到Calendar的实例对象
  20. (1)publicstaticCalendargetInstance()//默认方式:以本地的时区和地区来构造Calendar,实际上调用的是(4)的方法。
  21. (2)publicstaticCalendargetInstance(TimeZonezone)//以时区来构造Calendar
  22. (3)publicstaticCalendargetInstance(LocaleaLocale)//以地区构造Calendar
  23. (4)publicstaticCalendargetInstance(TimeZonezone,LocaleaLocale)//以地区构造Calendar
  24. 可以用DateFormat类来对日期进行格式化的显示,如下的代码所示:
  25. System.out.println(DateFormat.getDateInstance().format(c.getTime()));
  26. 输出为2007-5-29;
  27. 由于DateFormat也是一个抽象类,所以只能用getDateInstance()然后调用format(Datedate)对日期进行格式化,
  28. 从这里可以看出format的参数是Date,现在的Date的作用其实就是进行一个中转,一般而言用Calendar对日期进行操作就足够了,Date不建议使用,它的好多方法都不建议使用了。
  29. DateFomate的参数有好几种格式:
  30. publicstaticfinalintFULL=0;
  31. publicstaticfinalintLONG=1;
  32. publicstaticfinalintMEDIUM=2;
  33. publicstaticfinalintSHORT=3;
  34. publicstaticfinalintDEFAULT=MEDIUM;
  35. 默认输出是MEDIUM,也就是上面的输出2007-5-29。
  36. DateFormatdf=DateFormat.getDateInstance(DateFormat.FULL);
  37. System.out.println(df.format(c.getTime()));
  38. 格式是FULL,输出为:2007年5月29日星期二,当然了,默认是以本地的时区和地区输出的
  39. Java.util.GregorianCalendar:
  40. 该类是Java.util.Calendar的子类,可以化GregorianCalendar得到某天的日期对象
  41. //某年某月的第一天
  42. GregorianCalendarfirstDay=newGregorianCalendar(newInteger(year).intValue(),newInteger(month).intValue()-1,1);
  43. //该月下个月的第一天
  44. GregorianCalendarnextFirstDay=newGregorianCalendar(newInteger(year).intValue(),newInteger(month).intValue()-1,1);
  45. nextFirstDay.add(GregorianCalendar.MONTH,1);
  46. //该月最后一天(不必管每月多少天了)
  47. GregorianCalendarlastDay=newGregorianCalendar(newInteger(year).intValue(),newInteger(month).intValue()-1,1);
  48. lastDay.add(GregorianCalendar.MONTH,1);
  49. lastDay.add(GregorianCalendar.DATE,-1);
  50. 示范如下:
  51. /以今天为例
  52. GregorianCalendartoday=newGregorianCalendar(2007,4,29);
  53. System.out.println(today.getTime());
  54. //下个月的今天
  55. today.add(today.MONTH,1);
  56. System.out.println(today.getTime());
  57. //该月的最后一天
  58. GregorianCalendargc=newGregorianCalendar(2007,4,1);
  59. gc.add(gc.MONDAY,-1);
  60. gc.add(GregorianCalendar.DATE,-1);
  61. System.out.println(gc.getTime());
  62. 输出如下:
  63. TueMay2900:00:00CST2007
  64. FriJun2900:00:00CST2007
  65. SatMar3100:00:00CST2007
  66. java.util.Date和java.sql.Date的区别及应用
  67. java.util.Date就是在除了SQL语句的情况下面使用
  68. java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分
  69. 它都有getTime方法返回毫秒数,自然就可以直接构建
  70. java.util.Dated=newjava.util.Date(sqlDate.getTime());
  71. ...
  72. --------------------------------------------------------------------------------
  73. java.util.Date是java.sql.Date的父类(注意拼写)
  74. 前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他
  75. 后者之后在读写数据库的时候用他,因为PreparedStament的setDate()的第2参数和ResultSet的getDate()方法的第2个参数都是java.sql.Date
  76. 转换是
  77. java.sql.Datedate=newJava.sql.Date();
  78. java.util.Dated=newjava.util.Date(date.getTime());
  79. 反过来是一样的
  80. --------------------------------------------------------------------------------
  81. 继承关系:java.lang.Object--》java.util.Date--》java.sql.Date
  82. 具体的转换关系就是java.util.Dated=newjava.util.Date(newJava.sql.Date());
  83. --------------------------------------------------------------------------------
  84. sql.date,一般是在数据库的时间字段,util.date一般是日常日期字段
  85. --------------------------------------------------------------------------------
  86. java.sql.Date主要是用于sql中的!
  87. 而java.util.Date用语一般的环境下都行!
  88. --------------------------------------------------------------------------------
  89. SimpleDateFormatf=newSimpleDateFormat("yyyy-MM-ddhh:mm:ss");
  90. java.util.DateutilDate=newDate();
  91. java.sql.DatesqlDate=newjava.sql.Date(utilDate.getTime());
  92. java.sql.TimesTime=newjava.sql.Time(utilDate.getTime());
  93. java.sql.Timestampstp=newjava.sql.Timestamp(utilDate.getTime());
  94. System.out.println(utilDate.getYear());
  95. 这里所有时间日期都可以被SimpleDateFormat格式化format()
  96. f.format(stp);f.format(sTime);f.format(sqlDate);f.format(utilDate)
  97. java.sql.DatesqlDate=java.sql.Date.valueOf("2005-12-12");
  98. utilDate=newjava.util.Date(sqlDate.getTime());
  99. --------------------------------------------------------------------------------------------------
  100. 另类取得年月日的方法:
  101. importjava.text.SimpleDateFormat;
  102. importjava.util.*;
  103. java.util.Datedate=newjava.util.Date();
  104. //如果希望得到YYYYMMDD的格式
  105. SimpleDateFormatsy1=newSimpleDateFormat("yyyyMMDD");
  106. StringdateFormat=sy1.format(date);
  107. //如果希望分开得到年,月,日
  108. SimpleDateFormatsy=newSimpleDateFormat("yyyy");
  109. SimpleDateFormatsm=newSimpleDateFormat("MM");
  110. SimpleDateFormatsd=newSimpleDateFormat("dd");
  111. Stringsysyear=sy.format(date);
  112. Stringsmsmon=sm.format(date);
  113. Stringsdsday=sd.format(date);
  114. 为什么java.sql.Date类型的值插入到数据库中Date字段中会发生数据截取呢?
  115. java.sql.Date是为了配合SQLDATE而设置的数据类型。“规范化”的java.sql.Date只包含年月日信息,时分秒毫秒都会清零。格式类似:YYYY-MM-DD。当我们调用ResultSet的getDate()方法来获得返回值时,java程序会参照"规范"的java.sql.Date来格式化数据库中的数值。因此,如果数据库中存在的非规范化部分的信息将会被劫取。
  116. 同理。如果我们把一个java.sql.Date值通过PrepareStatement的setDate方法存入数据库时,java程序会对传入的java.sql.Date规范化,非规范化的部分将会被劫取。然而,我们java.sql.Date一般由java.util.Date转换过来,如:java.sql.DatesqlDate=newjava.sql.Date(newjava.util.Date().getTime()).
  117. 显然,这样转换过来的java.sql.Date往往不是一个规范的java.sql.Date.要保存java.util.Date的精确值,我们需要利用java.sql.Timestamp.
  118. 常用日期处理示例代码:
  119. importjava.sql.Timestamp;
  120. importjava.text.ParseException;
  121. importjava.text.SimpleDateFormat;
  122. importjava.util.Calendar;
  123. importjava.util.Date;
  124. publicclassTestDate{
  125. Calendarc=Calendar.getInstance();
  126. publicstaticvoidmain(String[]args){
  127. //取系统当前时间
  128. Calendarc=Calendar.getInstance();
  129. System.out.println(c.getTime());
  130. //取系统时间
  131. Dated=newDate();
  132. System.out.println(d);
  133. //将字符串型转为Timestamp型
  134. Strings="2008-9-1305:07:00";
  135. Timestampta=Timestamp.valueOf(s);
  136. System.out.println(ta);
  137. //日期格式化
  138. SimpleDateFormatsdf=newSimpleDateFormat("yyyy年MM月dd日");
  139. Timestampts=newTimestamp(System.currentTimeMillis());
  140. Stringstr=sdf.format(ts);
  141. System.out.println(str);
  142. //将字符串转换为java.sql.Date
  143. Strings1="2008-09-01";
  144. java.sql.Dated1=java.sql.Date.valueOf(s1);
  145. System.out.println(s1);
  146. //将字符串转换为java.util.Date
  147. Strings2=sdf.format(newDate());
  148. Dated2=null;
  149. try{
  150. d2=sdf.parse(s2);
  151. }catch(ParseExceptione){
  152. //TODOAuto-generatedcatchblock
  153. e.printStackTrace();
  154. }
  155. System.out.println(d2);
  156. //将java.sql.Date转换为java.util.Date
  157. java.sql.Dated3=newjava.sql.Date(System.currentTimeMillis());
  158. Dated4=newDate(d3.getTime());
  159. System.out.println(d4);
  160. //将java.util.Date转换为java.sql.Date
  161. Dated5=newDate();
  162. java.sql.Dated6=newjava.sql.Date(d5.getTime());
  163. System.out.println(d6);
  164. }
  165. }

本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/702556

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值