- 1、获取服务器端当前日期:<%@pageimport="java.util.Date"%><%DatemyDate=newDate();%>
- 2、获取当前年、月、日:<%@pageimport="java.util.Date"%><%DatemyDate=newDate();intthisYear=myDate.getYear()+1900;//thisYear=2003intthisMonth=myDate.getMonth()+1;//thisMonth=5intthisDate=myDate.getDate();//thisDate=30%>
- 3、按本地时区输出当前日期<%@pageimport="java.util.Date"%><%DatemyDate=newDate();out.println(myDate.toLocaleString());%>输出结果为:2003-5-30
- 4、获取数据库中字段名为"publish_time"、类型为Datetime的值<%@pageimport="java.util.Date"%><%...连接数据库...ResultSetrs=...DatesDate=rs.getDate("publish_time");%>
- 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、将字符串转换为日期<%@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、日期的加减运算方法:用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、比较日期方法:用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、记录一件事所花费的时间方法:调用两次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:如何格式化小数<%@pageimport="java.text.*"%><%DecimalFormatdf=newDecimalFormat(",###.00");doubleaNumber=33665448856.6568975;Stringresult=df.format(aNumber);out.println(result);%>输出结果为:33,665,448,856.66
- Java日期常用类:
- Java.util.TimeZone:
- 时区TimeZone类,即java.util.TimeZone类的实例包含了一个与格林威治标准时间(GMT)相比较得出的以微秒为单位的时区偏移量,而且它还处理夏令时。要获得一个所有支持的进区的列表,你可以使用方法TimeZone.getAvailableIDs,它将返回一个包含了所有进区ID的字符串数组。要知道关于TimeZone类的更多细节,可以参看API文档。
- Java.util.Calendar:
- Calender是一个抽象类,所以不能实例化,只能用它所提供的静态方法
- Calendarc=Calendar.getInstance();
- System.out.println(c.getTime());
- 输出如下:TueMay2912:57:36CST2007
- 有四种方式可以得到Calendar的实例对象
- (1)publicstaticCalendargetInstance()//默认方式:以本地的时区和地区来构造Calendar,实际上调用的是(4)的方法。
- (2)publicstaticCalendargetInstance(TimeZonezone)//以时区来构造Calendar
- (3)publicstaticCalendargetInstance(LocaleaLocale)//以地区构造Calendar
- (4)publicstaticCalendargetInstance(TimeZonezone,LocaleaLocale)//以地区构造Calendar
- 可以用DateFormat类来对日期进行格式化的显示,如下的代码所示:
- System.out.println(DateFormat.getDateInstance().format(c.getTime()));
- 输出为2007-5-29;
- 由于DateFormat也是一个抽象类,所以只能用getDateInstance()然后调用format(Datedate)对日期进行格式化,
- 从这里可以看出format的参数是Date,现在的Date的作用其实就是进行一个中转,一般而言用Calendar对日期进行操作就足够了,Date不建议使用,它的好多方法都不建议使用了。
- DateFomate的参数有好几种格式:
- publicstaticfinalintFULL=0;
- publicstaticfinalintLONG=1;
- publicstaticfinalintMEDIUM=2;
- publicstaticfinalintSHORT=3;
- publicstaticfinalintDEFAULT=MEDIUM;
- 默认输出是MEDIUM,也就是上面的输出2007-5-29。
- DateFormatdf=DateFormat.getDateInstance(DateFormat.FULL);
- System.out.println(df.format(c.getTime()));
- 格式是FULL,输出为:2007年5月29日星期二,当然了,默认是以本地的时区和地区输出的
- Java.util.GregorianCalendar:
- 该类是Java.util.Calendar的子类,可以化GregorianCalendar得到某天的日期对象
- //某年某月的第一天
- GregorianCalendarfirstDay=newGregorianCalendar(newInteger(year).intValue(),newInteger(month).intValue()-1,1);
- //该月下个月的第一天
- GregorianCalendarnextFirstDay=newGregorianCalendar(newInteger(year).intValue(),newInteger(month).intValue()-1,1);
- nextFirstDay.add(GregorianCalendar.MONTH,1);
- //该月最后一天(不必管每月多少天了)
- GregorianCalendarlastDay=newGregorianCalendar(newInteger(year).intValue(),newInteger(month).intValue()-1,1);
- lastDay.add(GregorianCalendar.MONTH,1);
- lastDay.add(GregorianCalendar.DATE,-1);
- 示范如下:
- /以今天为例
- GregorianCalendartoday=newGregorianCalendar(2007,4,29);
- System.out.println(today.getTime());
- //下个月的今天
- today.add(today.MONTH,1);
- System.out.println(today.getTime());
- //该月的最后一天
- GregorianCalendargc=newGregorianCalendar(2007,4,1);
- gc.add(gc.MONDAY,-1);
- gc.add(GregorianCalendar.DATE,-1);
- System.out.println(gc.getTime());
- 输出如下:
- TueMay2900:00:00CST2007
- FriJun2900:00:00CST2007
- SatMar3100:00:00CST2007
- java.util.Date和java.sql.Date的区别及应用
- java.util.Date就是在除了SQL语句的情况下面使用
- java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分
- 它都有getTime方法返回毫秒数,自然就可以直接构建
- java.util.Dated=newjava.util.Date(sqlDate.getTime());
- ...
- --------------------------------------------------------------------------------
- java.util.Date是java.sql.Date的父类(注意拼写)
- 前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他
- 后者之后在读写数据库的时候用他,因为PreparedStament的setDate()的第2参数和ResultSet的getDate()方法的第2个参数都是java.sql.Date
- 转换是
- java.sql.Datedate=newJava.sql.Date();
- java.util.Dated=newjava.util.Date(date.getTime());
- 反过来是一样的
- --------------------------------------------------------------------------------
- 继承关系:java.lang.Object--》java.util.Date--》java.sql.Date
- 具体的转换关系就是java.util.Dated=newjava.util.Date(newJava.sql.Date());
- --------------------------------------------------------------------------------
- sql.date,一般是在数据库的时间字段,util.date一般是日常日期字段
- --------------------------------------------------------------------------------
- java.sql.Date主要是用于sql中的!
- 而java.util.Date用语一般的环境下都行!
- --------------------------------------------------------------------------------
- SimpleDateFormatf=newSimpleDateFormat("yyyy-MM-ddhh:mm:ss");
- java.util.DateutilDate=newDate();
- java.sql.DatesqlDate=newjava.sql.Date(utilDate.getTime());
- java.sql.TimesTime=newjava.sql.Time(utilDate.getTime());
- java.sql.Timestampstp=newjava.sql.Timestamp(utilDate.getTime());
- System.out.println(utilDate.getYear());
- 这里所有时间日期都可以被SimpleDateFormat格式化format()
- f.format(stp);f.format(sTime);f.format(sqlDate);f.format(utilDate)
- java.sql.DatesqlDate=java.sql.Date.valueOf("2005-12-12");
- utilDate=newjava.util.Date(sqlDate.getTime());
- --------------------------------------------------------------------------------------------------
- 另类取得年月日的方法:
- importjava.text.SimpleDateFormat;
- importjava.util.*;
- java.util.Datedate=newjava.util.Date();
- //如果希望得到YYYYMMDD的格式
- SimpleDateFormatsy1=newSimpleDateFormat("yyyyMMDD");
- StringdateFormat=sy1.format(date);
- //如果希望分开得到年,月,日
- SimpleDateFormatsy=newSimpleDateFormat("yyyy");
- SimpleDateFormatsm=newSimpleDateFormat("MM");
- SimpleDateFormatsd=newSimpleDateFormat("dd");
- Stringsysyear=sy.format(date);
- Stringsmsmon=sm.format(date);
- Stringsdsday=sd.format(date);
- 为什么java.sql.Date类型的值插入到数据库中Date字段中会发生数据截取呢?
- java.sql.Date是为了配合SQLDATE而设置的数据类型。“规范化”的java.sql.Date只包含年月日信息,时分秒毫秒都会清零。格式类似:YYYY-MM-DD。当我们调用ResultSet的getDate()方法来获得返回值时,java程序会参照"规范"的java.sql.Date来格式化数据库中的数值。因此,如果数据库中存在的非规范化部分的信息将会被劫取。
- 同理。如果我们把一个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()).
- 显然,这样转换过来的java.sql.Date往往不是一个规范的java.sql.Date.要保存java.util.Date的精确值,我们需要利用java.sql.Timestamp.
- 常用日期处理示例代码:
- importjava.sql.Timestamp;
- importjava.text.ParseException;
- importjava.text.SimpleDateFormat;
- importjava.util.Calendar;
- importjava.util.Date;
- publicclassTestDate{
- Calendarc=Calendar.getInstance();
- publicstaticvoidmain(String[]args){
- //取系统当前时间
- Calendarc=Calendar.getInstance();
- System.out.println(c.getTime());
- //取系统时间
- Dated=newDate();
- System.out.println(d);
- //将字符串型转为Timestamp型
- Strings="2008-9-1305:07:00";
- Timestampta=Timestamp.valueOf(s);
- System.out.println(ta);
- //日期格式化
- SimpleDateFormatsdf=newSimpleDateFormat("yyyy年MM月dd日");
- Timestampts=newTimestamp(System.currentTimeMillis());
- Stringstr=sdf.format(ts);
- System.out.println(str);
- //将字符串转换为java.sql.Date
- Strings1="2008-09-01";
- java.sql.Dated1=java.sql.Date.valueOf(s1);
- System.out.println(s1);
- //将字符串转换为java.util.Date
- Strings2=sdf.format(newDate());
- Dated2=null;
- try{
- d2=sdf.parse(s2);
- }catch(ParseExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- System.out.println(d2);
- //将java.sql.Date转换为java.util.Date
- java.sql.Dated3=newjava.sql.Date(System.currentTimeMillis());
- Dated4=newDate(d3.getTime());
- System.out.println(d4);
- //将java.util.Date转换为java.sql.Date
- Dated5=newDate();
- java.sql.Dated6=newjava.sql.Date(d5.getTime());
- System.out.println(d6);
- }
- }
本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/702556