java中的日期处理类总结.docx
- 文档编号:7140691
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:10
- 大小:18.30KB
java中的日期处理类总结.docx
《java中的日期处理类总结.docx》由会员分享,可在线阅读,更多相关《java中的日期处理类总结.docx(10页珍藏版)》请在冰豆网上搜索。
java中的日期处理类总结
java中的日期处理类总结:
Date/Calendar/GregorianCalendar/DateFormat/SimpleDateFormat类
今天花了好大一点时间把java的日期类做了一下整理,哈
1、Date类(该类现在很少用了)
lDate类对象的创建:
n创建一个当前时间
//默认是创建一个代表系统当前日期的Date对象
Dated=newDate();
n创建一个我们指定的时间的Date对象:
下面是使用带参数的构造方法,可以构造指定日期的Date类对象,Date类中年份的参数应该是实际需要代表的年份减去1900,实际需要代表的月份减去1以后的值。
//创建一个代表
2009年6月12号的Date对象
Dated1=newDate(2009-1900,6-1,12);(注意参数的设置啊!
)
l正确获得一个date对象所包含的信息
如:
Dated2=newDate(2009-1900,6-1,12);
//获得年份(注意年份要加上1900,这样才是日期对象d2所代表的年份)intyear=d
2."getYear()+1900;
//获得月份(注意月份要加1,这样才是日期对象d2所代表的月份)intmonth=d
2."getMonth()+1;
//获得日期
intdate=d
2."getDate();
//获得小时
inthour=d
2."getHours();
//获得分钟
intminute=d
2."getMinutes();
//获得秒
intsecond=d
2."getSeconds();
//获得星期(注意:
0代表星期日、1代表星期
1、"2代表星期2,其他的一次类推了)
intday=d
2."getDay();
运行结果:
年份:
2009
月份:
6
日期:
12
小时:
0//不设置默认是0
分钟:
0//不设置默认是0
秒:
0//不设置默认是0
星期:
5//09-6-12今天就是星期5,又是一个星期天哦
2、Calendar类
Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些lCalendar类对象的创建
Calendar类是一个抽象类,在实际使用时实现特定的子类的对象。
由于Calendar类是抽象类,且Calendar类的构造方法是protected的,所以无法使用Calendar类的构造方法来创建对象,API中提供了getInstance方法用来创建对象。
n创建一个代表系统当前日期的Calendar对象
Calendarc=Calendar.getInstance();//默认是当前日期
n创建一个指定日期的Calendar对象
使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的____年__月__日参数来完成。
//创建一个代表
2009年6月12日的Calendar对象
Calendarc1=Calendar.getInstance();c
1."set(2009,6-1,12);
lCalendar类对象字段类型
Calendar类中用一下这些常量表示不同的意义,jdk内的很多类其实都是采用的这种思想Calendar.YEAR——年份
Calendar.MONTH——月份
Calendar.DATE——日期
Calendar.DAY_OF_MONTH——日期,和上面的字段意义完全相同
Calendar.HOUR——12小时制的小时
Calendar.HOUR_OF_DAY——24小时制的小时
Calendar.MINUTE——分钟
Calendar.SECOND——秒
Calendar.DAY_OF_WEEK——星期几
lCalendar类对象信息的设置与获得
nCalendar类对象信息的设置
uSet设置
如:
Calendarc1=Calendar.getInstance();
调用:
publicfinalvoidset(intyear,intmonth,intdate)c
1."set(2009,6-1,12);//把Calendar对象c1的____年__月__日分别设这为:
2009、"
6、12
利用字段类型设置
如果只设定某个字段,例如日期的值,则可以使用如下set方法:
调用:
publicvoidset(intfield,intvalue)
//把c1对象代表的日期设置为10号,其它所有的数值会被重新计算c
1."set(Calendar.DATE,10);
//把c1对象代表的年份设置为2008年,其他的所有数值会被重新计算c
1."set(Calendar.YEAR,2008);
其他字段属性set的意义以此类推
uAdd设置
Calendarc1=Calendar.getInstance();
//把c1对象的日期加上10,也就是c1所表的日期的10天后的日期,其它所有的数值会被重新计算c
1."add(Calendar.DATE,10);
//把c1对象的日期加上10,也就是c1所表的日期的10天前的日期,其它所有的数值会被重新计算c
1."add(Calendar.DATE,-10);
其他字段属性的add的意义以此类推
nCalendar类对象信息的获得
Calendarc1=Calendar.getInstance();
//获得年份
intyear=c
1."get(Calendar.YEAR);
//获得月份
intmonth=c
1."get(Calendar.MONTH)+1;
//获得日期
intdate=c
1."get(Calendar.DATE);
//获得小时
inthour=c
1."get(Calendar.HOUR_OF_DAY);
//获得分钟
intminute=c
1."get(Calendar.MINUTE);
//获得秒
intsecond=c
1."get(Calendar.SECOND);
//获得星期几(注意(这个与Date类是不同的):
1代表星期日、2代表星期
1、"3代表星期二,以此类推)
intday=c
1."get(Calendar.DAY_OF_WEEK);
3、GregorianCalendar类
GregorianCalendar是Calendar的一个具体子类,提供了世界上大多数国家使用的标准日历系统。
GregorianCalendar类对象的创建
GregorianCalendar有自己的构造方法,而其父类Calendar没有公开的构造方法哦。
GregorianCalendar()
在具有默认语言环境的默认时区内使用当前时间构造一个默认的GregorianCalendar。
GregorianCalendar(intyear,intmonth,intdayOfMonth)
在具有默认语言环境的默认时区内构造一个带有给定日期设置的GregorianCalendar。
GregorianCalendar(intyear,intmonth,intdayOfMonth,inthourOfDay,intminute)
为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的GregorianCalendar。
GregorianCalendar(intyear,intmonth,intdayOfMonth,inthourOfDay,intminute,intsecond)
为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的GregorianCalendar。
创建一个代表当前日期的GregorianCalendar对象
GregorianCalendargc=newGregorianCalendar();
//创建一个代表
2009年6月12日的GregorianCalendar对象(注意参数设置哦,与其父类是一样的哦,月份要减去1)
GregorianCalendargc=newGregorianCalendar(2009,6-1,12);
字段属性什么的都是随其父Calendar了,呵
另外:
GregorianCalendar有下面一个方法:
isLeapYear(intyear)
确定给定的年份是否为闰年
4、DateFormat类
DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并分析日期或时间。
日期/时间格式化子类(如SimpleDateFormat)允许进行格式化(也就是日期->文本)、分析(文本->日期)和标准化。
将日期表示为Date对象,或者表示为从GMT(格林尼治标准时间)1970年,1月1日00:
00:
00这一刻开始的毫秒数。
5、SimpleDateFormat类
publicclassSimpleDateFormatextendsDateFormatSimpleDateFormat是一个以与语言环境相关的方式来格式化和分析日期的具体类。
它允许进行格式化(日期->文本)、分析(文本->日期)和规范化。
所以本类可以实现:
String到Date到String的互转,如下:
SimpleDateFormat对象最常用的就是一下两招了:
//注意构造函数中是SimpleDateFormat类解析日期的模式,大小写代表的意义完全不一样哦SimpleDateFormatdf=newSimpleDateFormat("yy-MM-ddhh:
mm:
ss");
//日期到字符串的转换
Stringtoday=df.format(newDate());
//字符串到日期的转换
Datedate=df.parse("2009-06-1202:
06:
37");
System.out.println(df.format(newDate()));
6、日期类对象之间的互转
lDate类对象与long型时间的互转
//将Date类的对象转换为long型时间
Dated=newDate();
//使用对象的getTime()方法完成
longdLong=d.getTime();
//将long型时间转换为Date类的对象
longtime=32190L;
//使用Date的构造方法完成
Dated2=newDate(time);
lCalendar对象和long型时间之间的互转
//将Calendar对象转换为相对时间
Calendarc=Calendar.getInstance();
longt1=c.getTimeInMillis();
//将相对时间转换为Calendar对象
Calendarc1=Calendar.getInstance();
longt=71098L;c
1."setTimeInMillis(t1);
lCalendar对象和Date对象之间的互转
//将Calendar对象转换为相对时间
Calendarc=Calendar.getInstance();
Dated=c.getTime();
//将相对时间转换为Calendar对象
Calendarc1=Calendar.getInstance();
Dated1=newDate();
//通过setTime()方法后,日历c1所表示的日期就d1的日期c
1."setTime(d1);
7、Ok,利用以上各个类的功能,我们可以很简单的实现一些时间计算的功能哦,呵呵,下面看几个方法:
l判断是否是闰年
/**
*给定一个年份判断该年份是否为闰年createdate:
2009-6-10author:
Administrator*
*@paramyear
*@return
*/
publicstaticbooleanisLeapYear(intyear){
GregorianCalendarcalendar=newGregorianCalendar();
returncalendar.isLeapYear(year);}l获取当前日期的字符串表示形式
/**
*利用SimpleDateFormat获取当前日期的字符串表示形式格式:
2009-55-05*
*createdate:
2009-6-5author:
Administrator**@return
*/
publicstaticStringgetCurrentDate(){
//注意SimpleDateFormat("yy-MM-dd")的参数间隔符号可以随意设置的,如:
//yy年MM月dd日返回格式:
2009年06月09日
//yy-MM-dd返回格式:
2009-06-09
//SimpleDateFormatdateFormat=newSimpleDateFormat(
//"yy-MM-ddHH:
mm:
ss");
SimpleDateFormatdateFormat=newSimpleDateFormat("yy-MM-dd");
returndateFormat.format(System.currentTimeMillis());}l给出任意一个____年__月__日得到该天是星期几
/**
*给出任意一个____年__月__日得到该天是星期几createdate:
2009-6-10author:
Administrator*
*@paramdate
*参数格式2009-6-10
*返回值:
0代表星期日,1代表星期1,2代表星期2,以此类推
*/
publicstaticintgetWeek(Stringdate){
//注意参数的大小写格式
SimpleDateFormatdateFormat=newSimpleDateFormat("yyMMdd");
Calendarc=Calendar.getInstance();
try{
Dated=dateFormat.parse(date);
c.setTime(d);
}catch(ParseExceptione){}returnc.get(Calendar.DAY_OF_WEEK)-1;}l获得今天n天以后或者n天以前是那一天
/**
*获得距离今天n天的那一天的日期createdate:
2009-6-11author:
Administrator*
*@paramday
*@return
*/
publicstaticStringgetDistanceDay(intday){
Calendarcalen=Calendar.getInstance();
calen.add(Calendar.DAY_OF_MONTH,day);
Datedate=calen.getTime();
//这里也个用SimpleDateFormat的format()进行格式化,然后以字符串形式返回格式化后的date
SimpleDateFormatdateFormat=newSimpleDateFormat("yy-MM-dd");
returndateFormat.format(date);}l获得距离指定日期n天的那一天的日期
/**
*获得距离指定日期n天的那一天的日期createdate:
2009-6-11author:
Administrator*
*@paramdate
*格式:
2009-6-11
*@paramday
*@return
*/
publicstaticStringgetDistanceDay(Stringdate,intday){
SimpleDateFormatdateFormat=newSimpleDateFormat("yyMMdd");
Dated;
Calendarc=Calendar.getInstance();
try{
d=dateFormat.parse(date);
c.setTime(d);
c.add(Calendar.DATE,day);
}catch(ParseExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();}returndateFormat.format(c.getTime());}/**
*获得给定两个日期相差度天数
*createdate:
2009-6-23author:
Administrator**@paramdate1
*参数格式:
2009-06-21
*@paramdate2
*/
publicstaticlonggetGapDays(Stringdate1,Stringdate2){
String[]d1=date
1."split("-");
String[]d2=date
2."split("-");
Calendarc=Calendar.getInstance();
c.set(Integer.parseInt(d1[0]),Integer.parseInt(d1[1]),Integer
.parseInt(d1[2]),0,0,0);
longl1=c.getTimeInMillis();
c.set(Integer.parseInt(d2[0]),Integer.parseInt(d2[1]),Integer
.parseInt(d2[2]),0,0,0);
longl2=c.getTimeInMillis();
return(Math.abs(l1-l2)/(24*60*60*1000));}本文来自CSDN博客,转载请
http:
."aspx标明处出:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 中的 日期 处理 总结
![提示](https://static.bdocx.com/images/bang_tan.gif)