八java 常用日期函数总结.docx

上传人:b****6 文档编号:4716718 上传时间:2022-12-07 格式:DOCX 页数:14 大小:23.83KB
下载 相关 举报
八java 常用日期函数总结.docx_第1页
第1页 / 共14页
八java 常用日期函数总结.docx_第2页
第2页 / 共14页
八java 常用日期函数总结.docx_第3页
第3页 / 共14页
八java 常用日期函数总结.docx_第4页
第4页 / 共14页
八java 常用日期函数总结.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

八java 常用日期函数总结.docx

《八java 常用日期函数总结.docx》由会员分享,可在线阅读,更多相关《八java 常用日期函数总结.docx(14页珍藏版)》请在冰豆网上搜索。

八java 常用日期函数总结.docx

八java常用日期函数总结

 

八、java常用日期函数总结

请记得要引入java.util.Date和java.text.SimpleDateFormat两个包 

1.计算某一月份的最大天数 

Calendartime=Calendar.getInstance(); 

time.clear(); 

time.set(Calendar.YEAR,year); 

time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0 

intday=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数 

注:

在使用set方法之前,最好先clear一下,否则很多信息会继承自系统当前时间 

2.Calendar和Date的转化 

(1)Calendar转化为Date 

Calendarcal=Calendar.getInstance(); 

Datedate=cal.getTime(); 

(2)Date转化为Calendar 

Datedate=newDate(); 

Calendarcal=Calendar.getInstance(); 

cal.setTime(date); 

3.格式化输出日期时间 

Datedate=newDate(); 

SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-ddhh:

mm:

ss"); 

System.out.println(df.format(date)); 

4.计算一年中的第几星期 

(1)计算某一天是一年中的第几星期 

Calendarcal=Calendar.getInstance(); 

cal.set(Calendar.YEAR,2006); 

cal.set(Calendar.MONTH,9); 

cal.set(Calendar.DAY_OF_MONTH,3); 

intweekno=cal.get(Calendar.WEEK_OF_YEAR); 

(2)计算一年中的第几星期是几号 

SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); 

Calendarcal=Calendar.getInstance(); 

cal.set(Calendar.YEAR,2006); 

cal.set(Calendar.WEEK_OF_YEAR,1); 

cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY); 

System.out.println(df.format(cal.getTime())); 

输出:

 

2006-01-02 

5.add()和roll()的用法 

(1)add()方法 

SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-dd"); 

Calendarcal=Calendar.getInstance(); 

cal.set(Calendar.YEAR,2006); 

cal.set(Calendar.MONTH,9); 

cal.set(Calendar.DAY_OF_MONTH,3); 

cal.add(Calendar.DATE,-4); 

Datedate=cal.getTime(); 

System.out.println(df.format(date)); 

cal.add(Calendar.DATE,4); 

date=cal.getTime(); 

System.out.println(df.format(date)); 

输出:

 

2006-08-30 

2006-10-03 

(2)roll方法 

cal.set(Calendar.YEAR,2006); 

cal.set(Calendar.MONTH,9); 

cal.set(Calendar.DAY_OF_MONTH,3); 

cal.roll(Calendar.DATE,-4); 

date=cal.getTime(); 

System.out.println(df.format(date)); 

cal.roll(Calendar.DATE,4); 

date=cal.getTime(); 

System.out.println(df.format(date)); 

输出:

 

2006-10-29 

2006-10-03 

可见,roll()方法在本月内循环,一般使用add()方法; 

6.计算两个任意时间中间的间隔天数 

(1)传进Calendar对象 

/***//**计算两个时间之间相隔天数 

*@paramstartday开始时间 

*@paramendday结束时间 

*@return 

*/ 

publicintgetIntervalDays(Calendarstartday,Calendarendday)...{ 

//确保startday在endday之前 

if(startday.after(endday))...{ 

Calendarcal=startday; 

startday=endday; 

endday=cal; 

//分别得到两个时间的毫秒数 

longsl=startday.getTimeInMillis(); 

longel=endday.getTimeInMillis(); 

longei=el-sl; 

//根据毫秒数计算间隔天数 

return(int)(ei/(1000*60*60*24)); 

(2)传进Date对象 

/***//**计算两个时间之间相隔天数 

*@paramstartday开始时间 

*@paramendday结束时间 

*@return 

*/ 

publicintgetIntervalDays(Datestartday,Dateendday)...{ 

//确保startday在endday之前 

if(startday.after(endday))...{ 

Datecal=startday; 

startday=endday; 

endday=cal; 

//分别得到两个时间的毫秒数 

longsl=startday.getTime(); 

longel=endday.getTime(); 

longei=el-sl; 

//根据毫秒数计算间隔天数 

return(int)(ei/(1000*60*60*24)); 

}同理,可以用相同的方法计算出任意两个时间相隔的小时数,分钟数,秒钟数等 

注:

以上方法是完全按时间计算,有时并不能令人满意,如:

 

startday="2006-10-1120:

00:

00" 

endday="2006-10-128:

00:

00" 

计算结果为0,但是我们也许相让计算结果变为1,此时可以用如下方法实现:

 

在传参之前,先设定endday的时间,如:

 

endday.set(Calendar.HOUR_OF_DAY,23); 

endday.set(Calendar.MINUTE,59); 

endday.set(Calendar.SECOND,59); 

endday.set(Calendar.MILLISECOND,59); 

这样再传进去startday,endday,则结果就如我们所愿了。

不过,如果嫌以上方法麻烦,可以参考以下方法:

 

(3)改进精确计算相隔天数的方法 

publicintgetDaysBetween(Calendard1,Calendard2)...{ 

if(d1.after(d2))...{//swapdatessothatd1isstartandd2isend 

java.util.Calendarswap=d1; 

d1=d2; 

d2=swap; 

intdays=d2.get(Calendar.DAY_OF_YEAR)-d1.get(Calendar.DAY_OF_YEAR); 

inty2=d2.get(Calendar.YEAR); 

if(d1.get(Calendar.YEAR)!

=y2)...{ 

d1=(Calendar)d1.clone(); 

do...{ 

days+=d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数 

d1.add(Calendar.YEAR,1); 

}while(d1.get(Calendar.YEAR)!

=y2); 

returndays; 

获取系统当前时间:

 

publicstaticStringgetSystemTime(){ 

Datedate=newDate(); 

SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:

mm:

ss"); 

returndf.format(date); 

//字符串转化成时间类型(字符串可以是任意类型,只要和SimpleDateFormat中的格式一致即可) 

java.text.SimpleDateFormatsdf=newjava.text.SimpleDateFormat("M/dd/yyyyhh:

mm:

ssa",java.util.Locale.US); 

java.util.Dated=sdf.parse("5/13/200310:

31:

37AM"); 

SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-ddHH:

mm:

ss"); 

StringmDateTime1=formatter.format(d); 

  //当前时间 

  Calendarcal=Calendar.getInstance(); 

//SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-ddHH:

mm:

ss"); 

SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-ddHH:

mm:

ssGEDFwWaEF"); 

  StringmDateTime=formatter.format(cal.getTime()); 

  //1年前日期 

  java.util.DatemyDate=newjava.util.Date(); 

  longmyTime=(myDate.getTime()/1000)-60*60*24*365; 

  myDate.setTime(myTime*1000); 

  StringmDate=formatter.format(myDate); 

   

  //明天日期 

  myDate=newjava.util.Date(); 

  myTime=(myDate.getTime()/1000)+60*60*24; 

  myDate.setTime(myTime*1000); 

  mDate=formatter.format(myDate); 

//两个时间之间的天数 

  SimpleDateFormatmyFormatter=newSimpleDateFormat("yyyy-MM-dd"); 

  java.util.Datedate=myFormatter.parse("2003-05-1"); 

  java.util.Datemydate=myFormatter.parse("1899-12-30"); 

  longday=(date.getTime()-mydate.getTime())/(24*60*60*1000); 

//加半小时 

SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-ddhh:

mm:

ss"); 

java.util.Datedate1=format.parse("2002-02-2823:

16:

00"); 

longTime=(date1.getTime()/1000)+60*30; 

date1.setTime(Time*1000); 

Stringmydate1=formatter.format(date1); 

//年月周求日期 

SimpleDateFormatformatter2=newSimpleDateFormat("yyyy-MMFE"); 

java.util.Datedate2=formatter2.parse("2003-055星期五"); 

SimpleDateFormatformatter3=newSimpleDateFormat("yyyy-MM-dd"); 

Stringmydate2=formatter3.format(date2); 

//求是星期几 

mydate=myFormatter.parse("2001-1-1"); 

SimpleDateFormatformatter4=newSimpleDateFormat("E"); 

Stringmydate3=formatter4.format(mydate); 

在开发web应用中,针对不同的数据库日期类型,我们需要在我们的程序中对日期类型做各种不同的转换。

若对应数据库数据是oracle的Date类型,即只需要年月日的,可以选择使用java.sql.Date类型,若对应的是MSsqlserver数据库的DateTime类型,即需要年月日时分秒的,选择java.sql.Timestamp类型 

你可以使用dateFormat定义时间日期的格式,转一个字符串即可 

packagepersonal.jessica; 

importjava.util.Date; 

importjava.util.Calendar; 

importjava.sql.Timestamp; 

importjava.text.DateFormat; 

importjava.text.SimpleDateFormat; 

importjava.util.Locale; 

classDatetest{ 

/** 

*method将字符串类型的日期转换为一个timestamp(时间戳记java.sql.Timestamp) 

*@paramdateString需要转换为timestamp的字符串 

*@returndataTimetimestamp 

*/ 

publicfinalstaticjava.sql.Timestampstring2Time(StringdateString) 

throwsjava.text.ParseException{ 

DateFormatdateFormat; 

dateFormat=newSimpleDateFormat("yyyy-MM-ddkk:

mm:

ss.SSS",Locale.ENGLISH);//设定格式 

//dateFormat=newSimpleDateFormat("yyyy-MM-ddkk:

mm:

ss",Locale.ENGLISH); 

dateFormat.setLenient(false); 

java.util.DatetimeDate=dateFormat.parse(dateString);//util类型 

java.sql.TimestampdateTime=newjava.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型 

returndateTime; 

/** 

*method将字符串类型的日期转换为一个Date(java.sql.Date) 

*@paramdateString需要转换为Date的字符串 

*@returndataTimeDate 

*/ 

publicfinalstaticjava.sql.Datestring2Date(StringdateString) 

throwsjava.lang.Exception{ 

DateFormatdateFormat; 

dateFormat=newSimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH); 

dateFormat.setLenient(false); 

java.util.DatetimeDate=dateFormat.parse(dateString);//util类型 

java.sql.DatedateTime=newjava.sql.Date(timeDate.getTime());//sql类型 

returndateTime; 

publicstaticvoidmain(String[]args){ 

Dateda=newDate(); 

//注意:

这个地方da.getTime()得到的是一个long型的值 

System.out.println(da.getTime()); 

//由日期date转换为timestamp 

//第一种方法:

使用newTimestamp(long) 

Timestampt=newTimestamp(newDate().getTime()); 

System.out.println(t); 

//第二种方法:

使用Timestamp(intyear,intmonth,intdate,inthour,intminute,intsecond,intnano) 

Timestamptt=newTimestamp(Calendar.getInstance().get( 

Calendar.YEAR)-1900,Calendar.getInstance().get( 

Calendar.MONTH),Calendar.getInstance().get( 

Calendar.DATE),Calendar.getInstance().get( 

Calendar.HOUR),Calendar.getInstance().get( 

Calendar.MINUTE),Calendar.getInstance().get( 

Calendar.SECOND),0); 

System.out.println(tt); 

try{ 

StringsToDate="2005-8-18";//用于转换成java.sql.Date的字符串 

StringsToTimestamp="2005-8-1814:

21:

12.123";//用于转换成java.sql.Timestamp的字符串 

Datedate1=string2Date(sToDate); 

Timestampdate2=string2Time(sToTimestamp); 

System.out.println("Date:

"+date1.toString());//结果显示 

System.out.println("Timestamp:

"+date2.toString());//结果显示 

}catch(Exceptione){ 

e.printStackTrace(); 

下面是例子:

 

Java代码  

1.package test;  

2.  

3.import java.text.DateFormat;  

4.import java.text.ParseException;  

5.import java.text.SimpleDateFormat;   

6.  

7.import java.util.Calendar;  

8.import java.util.Date;   

9.import java.util.Hashtable;  

10.  

11.import javax.swing.JOptionPane;  

12.  

13.  

14.  

15.public class Test2{  

16.  

17.    public static boolean isdate(String s){  

18.        String a[]=s.split("-");  

19.        boolean flg=true;  

20.        if(!

(Integer.parseInt(a[0])>=1950 && Integer.parseInt(a[0])<=2050)){  

21.                flg=false;  

22.        }  

23.        return flg;  

24.    }  

25.      

26.    public static boolean checkDate(String s){     

27.        boolean ret = true;     

28.        try{     

29.            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");     

30.            ret = df.format(df.parse(s)).equals(s);     

31.        }     

32.        catch(ParseException e){     

33.            ret = false;     

34.        }     

35.        return ret;     

36.    }  

37.      

38.    public Object dateinfo(String s){  

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1