java日期相关类实例详解
一、Date类
类Date表示特定的瞬间,精确到毫秒。用距离1970年1月1日00:00:00的毫秒数(long)类型来表示一个特定的时间点,该值可正可负。
Date类中很多方法已经过时,使用Calendar来替代。
常用方法有
longgetTime()
voidsetTime(longtime)
publicclassT01Date{
publicstaticvoidmain(String[]args){
//getTime():返回的时间是距离1970年的毫秒数.值不受setTime()的影响
//date值受setTime()的影响
Datedate=newDate();
longcurrent=date.getTime();
System.out.println(current);//1472002479966
System.out.println(date);//WedAug2409:34:39CST2016
longtime=current+1000*60*60*24;//时间设置为明日此时
date.setTime(time);
System.out.println(date.getTime());//1472002479966
System.out.println(current);//1472002479966
System.out.println(date);//ThuAug2509:34:39CST2016
}
}
二、SimpleDateFormat
SimpleDateFormat根据特定的日期格式在Date和字符串之间转换
常用方法
Stringformat(Datedate):将日期按照指定格式转换成字符串
Dateparse(Stringstr):将字符串按照指定格式转换成Date
可以用来指定格式的字符
/**
*java.text.SimpleDateFormat
*该类可以根据一个指定的日期格式将Date于String
*之间相互转换
*@authorzc
*
*/
publicclassT02SimpleDateFormat{
publicstaticvoidmain(String[]args)throwsParseException{
Datenow=newDate();
//2016-08-1209:55:23
//yyyy-MM-ddhh:ss:mm
SimpleDateFormatsdf=newSimpleDateFormat("yyyy年MM月dd日hh时ss分mm秒");
Stringstr=sdf.format(now);
System.out.println(str);
//a居然能区分上下午汉字
StringstrDate="2012年12月20日下午12点20分30秒";
SimpleDateFormatsdf2=newSimpleDateFormat("yyyy年MM月dd日ahh点ss分mm秒");
Datedate=sdf2.parse(strDate);
System.out.println(date);
}
}
三、Calendar
java.util.Calendar是抽象类,主要用来对时间分量进行计算。
常用方法
(1)Date和Calendar之间的转换
//默认创建出来的Calendar的实现类表示当前系统时间 Calendarc=Calendar.getInstance(); //将Calendar转换为Date Datedate=c.getTime(); //Date->Calendar /* *voidsetTime(Datedate) *该方法可以使当前Calendar表示给定的 *Date所表示的时间 **/ c.setTime(date); } }
(2)getInstance()方法
Calendar是抽象类,其提供了一个工厂方法:CalendargetInstance()用来获取Calendar类型的实例
(3)get(intfield)方法获取时间分量
importjava.util.Calendar;
/**
*Calendar提供了获取各个时间分量的值的方法
*@authorzc
*/
publicclassT05Calendar2{
publicstaticvoidmain(String[]args){
Calendarc=Calendar.getInstance();
//获取年
intyear=c.get(Calendar.YEAR);
System.out.println("year:"+year);//2016
//获取月:月从0开始!!!,0表示一月
intmonth=c.get(Calendar.MONTH);
System.out.println("month:"+month);//7
/*
*和天相关的时间分量
*DATE,DAY_OF_MONTH:是一致的,表示月中的第几天
*DAY_OF_YEAR:表示年中的天
*DAY_OF_WEEK:表示周中的天
*
**/
System.out.println(c.get(Calendar.DATE));
System.out.println(c.get(Calendar.DAY_OF_MONTH));
System.out.println(c.get(Calendar.DAY_OF_YEAR));
System.out.println(c.get(Calendar.DAY_OF_WEEK));
intdow=c.get(Calendar.DAY_OF_WEEK)-1;
String[]data={"日","一","二","三","四","五","六"};
System.out.println("周"+data[dow]);
//获取小时,分钟,秒HOUR_OF_DAY:24小时HOUR:12小时
System.out.println(c.get(Calendar.HOUR_OF_DAY));//14
System.out.println(c.get(Calendar.HOUR));//2
System.out.println(c.get(Calendar.MINUTE));
System.out.println(c.get(Calendar.SECOND));
}
}
(4)set()方法设置时间分量
/**
*设置时间分量
*@authorzc
*
*/
publicclassT06Calendar3{
publicstaticvoidmain(String[]args){
//表示2008-08-0820:08:08
//设置年
Calendarc=Calendar.getInstance();
c.set(Calendar.YEAR,2008);
//设置月,月从0开始
c.set(Calendar.MONTH,Calendar.AUGUST);
//设置日
c.set(Calendar.DATE,8);
//设置时
c.set(Calendar.HOUR_OF_DAY,20);
//设置分
c.set(Calendar.SECOND,8);
//设置秒
c.set(Calendar.MINUTE,8);
System.out.println(c.getTime());
//!!!设置的时间分量超出后,会自行进位
}
}
(5)add()方法在当前时间分量基础上修改时间分量
(6)getActualMaximum()获取某个时间分量所允许的最大值
/**
*获取某个时间分量所允许的最大值
*@authorzc
*/
publicclassT07Calendar4{
publicstaticvoidmain(String[]args){
Calendarc=Calendar.getInstance();
//查看当月共多少天
intdays=c.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(days);
//查看今年多少天
intdoy=c.getActualMaximum(Calendar.DAY_OF_YEAR);
System.out.println(doy);
intt=c.getActualMaximum(Calendar.MINUTE);
System.out.println(t);
}
}
四、Date、SimpleDateFormat和Calendar的一个综合实例
@Test
publicvoidtest01()throwsParseException{
//要求用户输入一个日期,计算后,指定格式输出日期
/*String--SimpleDateFormat()-->Date
Date-->Calendar
使用Calendar进行相应计算
Calendar-->Date
Date--SimpleDateFormat-->String
*/
Stringinput="2013-03-26";
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");
Datedate=sdf.parse(input);
Calendarc=Calendar.getInstance();
//set(),与add()
c.setTime(date);
c.add(Calendar.YEAR,1);
c.set(Calendar.MONTH,0);
c.set(Calendar.DAY_OF_WEEK,1);
date=c.getTime();
SimpleDateFormatsdf2=newSimpleDateFormat("yyyy年MM月dd分hh时ss分mm秒");
StringstrTime=sdf2.format(date);
System.out.println(strTime);
}
以上就是本文关于java日期相关类实例详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Java开发基础日期类代码详解、Java编程实现时间和时间戳相互转换实例等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!