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. python记录_day18 反射 判断函数与方法

    一.三个内置函数 1.issubclass(a, b)  判断a类是否是b类的子类 class Foo: pass class Zi(Foo): pass class Sun(Zi): pass pr ...

  2. 『MXNet』第十二弹_再谈新建计算节点

    上一节我们已经谈到了计算节点,但是即使是官方文档介绍里面相关内容也过于简略,我们使用Faster-RCNN代码中的新建节点为例,重新介绍一下新建节点的调用栈. 1.调用新建节点 参数分为三部分,op_ ...

  3. html和jsp的区别及优缺点

    ♥ HTML(Hypertext Markup Language)文本标记语言,它是静态页面,和JavaScript一样解释性语言,为什么说是解释性语言呢?因为,只要你有一个浏览器那么它就可以正常显示 ...

  4. zend framwork黑箱测试

    1.我采用的测试时phpunit 1).按照:https://phpunit.de/  把下载的文件放到C:/window 目录,让后修改一下文件的后缀,使在敲击命令的时候可以不用敲文件的全称 如:p ...

  5. kohana导入和导出

    一.导入 ini_set('memory_limit', '512M'); require_once(Kohana::find_file('vendor', 'PHPExcel/PHPExcel/IO ...

  6. BIO,NIO的区别,使用场景。

    一.什么是io? i就是input,输入,o就是output,输出,合起来就是以流为基本的输入输出. 二.传统的io 传统的服务器端同步阻塞I/O处理(也就是BIO,Blocking I/O): 当客 ...

  7. js修改样式

    添加.删除class: $("#id").addClass("someClass"); $("#id").removeClass(" ...

  8. Python面向对象之继承

    前言: 继承是面向对象的3大特性之一,对于继承一点要注意一下4点. 一.基本查找 如果子类继承了父类,子类的实例化对象,没有的方法和属性会去父类找 class Parent(object): #父类 ...

  9. id: cannot find name for user ID xxx处理办法

    一.现像 root用户登录显示正常但以普通用户登录时报类似如下错误: id: cannot find name for user ID 500id: cannot find name for grou ...

  10. Java连接Oracle/MySQL数据库教程

    一.下载 oracle java驱动下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090 ...