一、Calendar类
Calendar是一个抽象类,是常用的日期处理对象。Calendar能处理复杂的日期计算。不仅包含Date的所有方法,还可以设置自己的时区和国际化格式。Calendar比Date功能要强得多,表示的形式更加多更加丰富。Calendar抽象类定义了足够的方法,让我们能够表述日历的规则。 **//Date表示形式** Sat Sep 24 11:06:41 SGT 2016 **//Calendar表示形式** java.util.GregorianCalendar[time=1474686401935,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Singapore",offset=28800000,dstSavings=0,useDaylight=false,transitions=9,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2016,MONTH=8,WEEK_OF_YEAR=39,WEEK_OF_MONTH=4,DAY_OF_MONTH=24,DAY_OF_YEAR=268,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=4,AM_PM=0,HOUR=11,HOUR_OF_DAY=11,MINUTE=6,SECOND=41,MILLISECOND=935,ZONE_OFFSET=28800000,DST_OFFSET=0]二、Calendar类常用操作
(一)、获取Clandar对象的实例,取得当前时间的信息。
Canlendar c=Calendar.getlnstance(); import java.util.Calendar; import java.util.Date; public class CalendarTest { public static void main(String[] args) { //获取Date类对象的实例,取得当前时间的信息 Date d=new Date(); //获取Clandar对象的实例,取得当前时间的信息 Calendar c=Calendar.getInstance(); System.out.println(d); System.out.println(c); } }程序运行结果:
Sat Sep 24 11:12:50 SGT 2016 java.util.GregorianCalendar[time=1474686401935,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Singapore",offset=28800000,dstSavings=0,useDaylight=false,transitions=9,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2016,MONTH=8,WEEK_OF_YEAR=39,WEEK_OF_MONTH=4,DAY_OF_MONTH=24,DAY_OF_YEAR=268,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=4,AM_PM=0,HOUR=11,HOUR_OF_DAY=11,MINUTE=6,SECOND=41,MILLISECOND=935,ZONE_OFFSET=28800000,DST_OFFSET=0](二)、设置Calendar实例所表示的时间。
c.set();在当前时间的信息中修改,用设置的元素值去代替相应的值,其他保持不变。
以c.set(field, value)为例。
Field:表示有设置Calendar中的那个元素,value要设置元素的值是多少。
import java.util.Calendar; public class CalendarTest { public static void main(String[] args) { //获取Clandar对象的实例,取得当前时间的信息 Calendar c=Calendar.getInstance(); //在当前时间的信息中修改,用设置的元素值去代替相应的值,其他保持不变 c.set(Calendar.YEAR, 2020); System.out.println(c); } }(三)、获取指定的时间属性
C.get(Calendar.时间属性)在获取月份时记得“+1”,因为月份是从0开始计算的,比实际月份少1。
import java.util.Calendar; public class CalendarTest { public static void main(String[] args) { //获取Clandar对象的实例,取得当前时间的信息 Calendar c=Calendar.getInstance(); //获取指定的时间属性--年 int year=c.get(Calendar.YEAR); //获取指定的时间属性--月 int month=c.get(Calendar.MONTH)+1; //获取指定的时间属性--日 int day=c.get(Calendar.DAY_OF_MONTH); System.out.println(year+"年"+month+"月"+day+"日"); } }(四)、SimpleDateFormat类
1、SimpleDateFormat类是一个以语言环境相关的方式来格式化和分析日期的具体类。 2、SimpleDateFormat使得可以选择任何用户定义的日期-时间格式的模式。 3、H:代表一天中的小时数(0-23);h:am/pm中的小时数(1-12)。 4、s:代表分钟的秒数;S:代表毫秒数。
SimpleDateFormat类的使用1、获取SimpleDateFormat的实例
SimpleDateFormat sdf=new SimpleDateFormat(“自定义时间格式”); 在小时里,HH代表24小时制,hh代表12小时制。
例如:
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");2、将日期格式成指定的字符串
sdf.format(new Date) 把日期按照自己定义的格式输出来。
import java.text.SimpleDateFormat; import java.util.Date; public class CalendarTest { public static void main(String[] args) { //获取指定日期格式的SimpleFormat实例 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //获取指定日期的格式化字符串 String nowStr =sdf.format(new Date()); System.out.println(nowStr); } }3、将格式化的字符串转换成日期对象
sdf.parse(“具体时间数值”) 把具体时间数值字符串转换成日期对象,是在原来的基础上进行相应地修改,没有定义取其默认值。
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class CalendarTest { public static void main(String[] args) { //获取指定日期格式的SimpleFormat实例 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //将格式化的字符串转换成日期 try { Date d = sdf.parse("2016-9-24 14:17:30"); System.out.println(d); } catch (ParseException e) { e.printStackTrace(); } } }