Calendar

概念

java.util.Calendar ==> 是日历类, 在Date后出现,替换掉许多Date方法
-->该类将所有可能用到的时间信息封装为 静态成员变量
日历类-->方便获取各个时间属性

获取方式

Calendar为抽象类---->在创建对象时, 并非直接创建 ,而是 通过静态方法创建 .返回子类对象

--> static Calendar getInstance();==>使用默认时区和环境获得一个日历对象(Calendar的子类对象)

代码例:

Calendar c = Calendar.getInstance()
//直接返回子类对象

常用方法:

public int get (int field) ==> 返回指定日历字段的值

get(年):获取年的值
get(月):获取月的值
get(日):获取日的值

代码例:

Calendar c = Calendar.getInstance();//获取Calendar对象
int year = c.get(1);
//1表示年/2表示月
//如果每次get都传递数字,会大大影响开发效率即程序阅读
//因此可以使用Calendar中的静态常量表示这些数字
// Calendar提供了很多静态常量,对应一个数字,见名知意
// Calendar中月份由0开始
int day = c.get(Calendar.DAY_OF_YEAR)

public void set (int field, int value) ==> 将给定日历字段设置为给定值

field --> 给哪个字段设置
value--> 设置什么值

代码例:

Calendar c = Calendar.getInstance();//==>获取Calendar对象
//调用set方法,重新设置值
c.set(Calendar.YEAR,2000);//==>Calendar.YEAR.静态常量

public abstract void add (int field , int amount) ==> 根据日历的规则,为给定的日历字段添加或减去指定的时间量

field:--> 给哪个字段进行计算
amount--> 对字段 +-指定值
+在原来数据基础上,+此数据
-在原来数据基础上,-此数据
代码例:

Calendar c = Calendar.getInstance;//==>获取对象
c.add(Calendar.YEAR,2);==>2015-->2017
c.add(Calendar.YEAR,-2)==>2015-->2013

void roll(int field , int amout) ==> 加上的value超过了该字段所能表示的最大范围后,也不会向上一个字段进位
public Date getTime () ==> 返回一个表示此Calendar时间值的
Date对象

代码例:

Calendar c = Calendar.getInsatance();
Date dat = c.getTime();


void set(int field , int value) ==> 将给定的日历字段设置为给定值
void set(int year , int month , int date) ==> 设置Calendar对象年/月/日三个字段的值
void set(int year, int date , int hourOfDay, int minute , int second) ==> 设置Calendar对象的年.月.日.时.分.秒六个字段的值

--(field是Calendar静态属性,Clendar.YEAR/Calendar.MONTH/Clendar.DAY_...)--

方法
get/set ==> 获取指定字段的值/设置指定字段的值
add ==> 对指定日历字段的值进行加减操作, 如果第二个参数为整数,则加上偏移量,反之减
getTime ==> 拿到对应的Date对象

tips ==> 西方星期的开始为周日,中国为周一
Calendar类中, 月份的表示是以0-11代表1-12月
日期具有大小关系,,时间靠后,时间越大


roll和add区别

add:当被修改的字段超出它允许的范围时,会发生进位(上一级)
如果下一级字段也需要改变,name该字段会修正到最小变化的值
roll:当被修改的字段超出它允许的范围时,上一级字段不会增大

Calendar容错性

setLenient(false) ==> 可关闭Calendar容错性,让它进行严格的参数检查

-->Calendar两种解释日历字段的模式:
--> 1.lenient,可接受超出允许范围的值
2.non-lenient若超出允许范围,则抛出异常

set方法延迟修改

set(f , value) --> 方法将日历字段f更改为value, 并且, 设置一个内部成员变量, 以指示日历字段f已经被更改,
--> 日历字段立即更改,但Calendar所代表的时间却不会立即修改,知道下次调用方法时,才重新计算日历的时间

TimeZone(时区)

--> 1.程序中默认实现是以格林威治时间为标准的,产生8小时的时间差
2.TimeZone设置程序中时间所属的时区
3.抽象类,不能调用构造器创建实例,但可调用静态方法:getDafault(获取运行机器默认时区,默认时区可以通过修改操作系统相关配置来调整)或getTimeZone(根据时区ID获取对应时区)得到TimeZone实例
获取时区相关信息
1.static String[] getAvailabledIDs() ==> 获取java支持的所有时区
2.static TimeZone getDarault() ==> 默认时区
3.String getDisplayName() ==> 获取对象时区名称
4.String getID() ==> 获取该时区ID
5.static TimeZone getTimeZone(String ID) ==> 获取指定ID对应的TZ对象

求2018/02/14是星期几?

public class Test06_Calendar {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR,2018);
c.set(Calendar.MONTH,1);
c.set(Calendar.DATE,14);

int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int date = c.get(Calendar.DATE);
int i = c.get(Calendar.DAY_OF_WEEK);
char week = getWeek(i);
System.out.println(month);
System.out.println(week);
}
public static char getWeek(int a){
char[] c = {' ','日','一','二','三','四','五','六'};//迎合底层源码
return c[a];
}
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值