一、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();
}
}
}