Calendar类:(日历)

  用法:Calendar是一个抽象类;不能实例化(不能new),使用时通过子类完成实现,不过这个类不需要创建子类对象,而是通过静态方法直接获取;

  获取对象方法:getInstance();

  getInstance()方法:官方文档:使用默认时区和语言环境获得一个日历。

    getInstance(Locale aLocale)   使用默认时区和指定语言环境获得一个日历。

    getInstance(TimeZone zone)     使用指定时区和默认语言环境获得一个日历。

    getInstance(TimeZone zone, Locale aLocale)    使用指定时区和语言环境获得一个日历。

示例:

public class Demo1 {
public static void main(String[] args) {
Calendar ca=Calendar.getInstance();//创建一个日历的对象ca;通过getInstance()方法创建日历对象,
System.out.println(ca);
/*输出结果:
* java.util.GregorianCalendar[time=1553060892101,areFieldsSet=true,areAllFieldsSet=true,lenient=true,
* zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,
* transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=2,
* WEEK_OF_YEAR=12,WEEK_OF_MONTH=4,DAY_OF_MONTH=20,DAY_OF_YEAR=79,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=3,
* AM_PM=1,HOUR=1,HOUR_OF_DAY=13,MINUTE=48,SECOND=12,MILLISECOND=101,ZONE_OFFSET=28800000,DST_OFFSET=0]
*/
/*输出结果我们可以看出,里边有很多东西,我们可以大致辨认出第三行有YEAR=2019,MONTH=2,
* WEEK_OF_YEAR=12,WEEK_OF_MONTH=4,DAY_OF_MONTH=20,DAY_OF_YEAR=79,
* 意思是2019年,3月(Calendar中默认的是0-11月,所以实际月份要加1),一年的第12周,一个月的第四个星期,一个月的第20天,一年的第79天,一周的第四天(美国默认一周的周日是一星期的开始)
* */
}
}

为了把上面运行结果显示出来,只显示我们想要的,会用到一些方法:

get方法:

import java.util.Calendar;

public class Demo2 {
public static void main(String[] args) {
Calendar ca=Calendar.getInstance();
int year=ca.get(Calendar.YEAR);//获得ca日历年份
int month=ca.get(Calendar.MONTH)+1;//获得月份,日历默认月份0-11月,所以要加1才是是实际月份;
int day=ca.get(Calendar.DAY_OF_MONTH);//获得天数
System.out.println(year+"年"+month+"月"+day+"日");//2019年3月20日
}
}

set()方法:

public class Demo3 {
public static void main(String[] args) {
Calendar ca=Calendar.getInstance();//创建日历ca
Date d=ca.getTime();//getTime()方法: 返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。
System.out.println(d);//输出时间:Wed Mar 20 14:35:19 CST 2019
ca.set(1996, 6, 27);//set(year, month, date);设置日历的年月日
Date d1=ca.getTime();
System.out.println(d1);//Sat Jul 27 14:38:23 CST 1996
}
/*可以看出日历的时间变了,set方法将日历的时间改为了1996年6月27日*/
}

add方法:官方资料:add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。

import java.util.Calendar;

public class Demo {
public static void main(String[] args) {
Calendar ca=Calendar.getInstance();
getdate(ca);//2019-2-20
ca.add(Calendar.YEAR, 1);//年份加一
getdate(ca);//2020-2-20
ca.add(Calendar.MONTH, 4);//月份加四
getdate(ca);//2020-7-20
ca.add(Calendar.DAY_OF_MONTH, -10);//日期减十天
getdate(ca);//2020-7-10
}
private static void getdate(Calendar ca) {
// 创建显示日期方法,将日历变为容易观察的样式,方便上面调用查看
System.out.println(ca.get(Calendar.YEAR)+"-"+(ca.get(Calendar.MONTH)+1)+"-"+ca.get(Calendar.DAY_OF_MONTH));
}
}

Calendar类综合练习:

计算闰年:

import java.util.Calendar;
import java.util.Scanner; public class Demo4 {
public static void main(String[] args) {
Calendar c=Calendar.getInstance();//getInstance()方法:
System.out.println("请输入年份:");
int year=new Scanner(System.in).nextInt();
c.set(year, 2, 1);//set()设置日历字段年月日,在日历中是0-11月,所以这里写的是二月,实际日期是3月一日,本句中设置日历c为3月1日;
c.add(Calendar.DAY_OF_MONTH, -1);//add根据日历的规则,为指定日历字段添加或减去指定的时间量,本句中给c日历当前日期减去一天;
int day=c.get(Calendar.DAY_OF_MONTH);//定义变量day接收c当前的日期;DAY_OF_MONTH指定一个月中的某天
if(day==29){
System.out.println("是闰年");
}else{
System.out.println("不是闰年");
}
}
}

运行结果:

java学习笔记17(Calendarl类)的更多相关文章

  1. java学习笔记7--抽象类与抽象方法

    接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...

  2. Java学习笔记16---抽象类与接口的浅显理解

    抽象类是由abstract修饰的类,定义方式如public abstract class A{...}. 接口由interface修饰,定义方式如public interface B{...}. 抽象 ...

  3. 1.9(java学习笔记)object类及toString()与equals()方法

    object类 java中objec是所有类公共的父类,一个类只要没有明显的继承某一类,那么它就是继承object类. 例如 class Person {......};和class Person e ...

  4. 【原】Java学习笔记031 - 常用类

    package cn.temptation; public class Sample01 { public static void main(String[] args) { /* * 类 Math: ...

  5. Java学习笔记day06_自定义类_ArrayList

    1.自定义类class 使用类的形式, 对现实中的事物进行描述. 类是引用数据类型. 事物: 方法,变量. 方法:事物具备的功能. 变量:事物的属性. 格式: public class 类名{ //属 ...

  6. Java学习笔记(2)——有关类

    Java类的高级特性: {Java管理文件机制:类包. 同一个包中的类互相访问时,可以不指定包名. 同一个包中的类不必存放在同一位置,如com.lang.class1和com.lang.class2可 ...

  7. 0029 Java学习笔记-面向对象-枚举类

    可以创建几个对象? n多个:大部分的类,都可以随意创建对象,只要内存不爆掉 1个:比如单例类 有限的几个:采用单例类的设计思路,可以只允许创建少数的几个特定的对象:还有就是枚举类. 创建少数几个对象, ...

  8. java学习笔记之String类

    String类总结 String类概述: java.lang.String 类是字符串操作类 String类的常用构造方法: //1.直接赋值 String str= "hellojava& ...

  9. java学习笔记之System类

    System类常用总结 System类概述 java.lang.System类,系统属性信息工具类 常用静态方法: 1. public static long currentTimeMillis() ...

随机推荐

  1. php 出现Warning: A non-numeric value encountered问题的原因及解决方法

    在使用(+ - * / ** % << >> | & ^) 运算时,例如a+b,如果a是开始一个数字值,但包含非数字字符(123a),b不是数字值开始时(b456),就 ...

  2. 2018 Benelux Algorithm Programming Contest (BAPC 18)I In Case of an Invasion, Please. . .

    题意:一副无向有权图,每个点有一些人,某些点是避难所(有容量),所有人要去避难所,问最小时间所有人都到达避难所, 题解:dij+二分+最大流check,注意到避难所最多10个,先挨个dij求到避难所的 ...

  3. mysql并行执行--缩短主从同步时延

    https://www.w3cschool.cn/architectroad/architectroad-mysql-parallel-copy.html 三.结尾 从mysql并行复制缩短主从同步时 ...

  4. 新增节点NewBook并增加属性Name="WPF"

    XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(xmlPath); var root = xmlDoc.DocumentElement;//取到 ...

  5. json 常用的序列化 反序列化对象 代码

    序列化对象: ---------------------------------------------------------- Person p = new Person() { Name = & ...

  6. Hadoop--Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Starting namenodes on [localhost]

    Unable to load native-hadoop library for your platform... using builtin-java classes where applicabl ...

  7. C++ leetcode::two sum

    上完C++的课就在也没用过C++了,最近要找实习,发现自己没有一门语言称得上是熟练,所以就重新开始学C++.记录自己从入门到放弃的过程,论C++如何逼死花季少女. 题目:Given an array ...

  8. java反序列化漏洞原理研习

    零.Java反序列化漏洞 java的安全问题首屈一指的就是反序列化漏洞,可以执行命令啊,甚至直接getshell,所以趁着这个假期好好研究一下java的反序列化漏洞.另外呢,组里多位大佬对反序列化漏洞 ...

  9. matlab server mapreduce

    >> Z = server.rpc('zeros', 2, 3);>> Z = [2x3 double] [2x3 double] >> Z{1}ans = 0 0 ...

  10. mex

    edit(fullfile(prefdir, 'mexopts.bat')) http://www.mathworks.cn/support/solutions/en/data/1-8FJXQE/in ...