Calendar意味日历,对Date类中的很多方法做了改进

Calendar类是一个抽象类,不可以见对象,需要子类完成实现

不过这个类有特殊之处,不需要创建子类对象,而是使用它的静态方法直接获取:

示例:

package demo;

import java.util.Calendar;

public class CalendarDemo {
public static void main(String[] args) { Calendar c1 = Calendar.getInstance();
System.out.println(c1);
}
}

发现输出很多内容,我们仔细看下:

java.util.GregorianCalendar[time=1515655126876,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=2018,MONTH=0,WEEK_OF_YEAR=2,
WEEK_OF_MONTH=2,DAY_OF_MONTH=11,DAY_OF_YEAR=11,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,
HOUR=3,HOUR_OF_DAY=15,MINUTE=18,SECOND=46,MILLISECOND=876,ZONE_OFFSET=28800000,DST_OFFSET=0]

这些和日期有关的内容用一些方法可以得到:

示例:

package demo;

import java.util.Calendar;

public class CalendarDemo {
public static void main(String[] args) {
function();
}
public static void function(){
Calendar c1 = Calendar.getInstance();
int year = c1.get(Calendar.YEAR);
//获取月份时候记得加1,类的内部是0-11月
int month = c1.get(Calendar.MONTH)+1;
int day = c1.get(Calendar.DAY_OF_MONTH);
System.out.println(year+"年"+month+"月"+day+"日");
//输出:2018年1月11日
}
}

其他的一些方法:

package demo;

import java.util.Calendar;
import java.util.Date; public class CalendarDemo {
public static void main(String[] args) {
function1();
function2();
function3();
} public static void function1() {
Calendar c1 = Calendar.getInstance();
c1.set(Calendar.MONTH, 9);
int year = c1.get(Calendar.YEAR);
int month = c1.get(Calendar.MONTH) + 1;
int day = c1.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + day + "日");
// 输出:2018年10月11日
} public static void function2() {
Calendar c1 = Calendar.getInstance();
c1.add(Calendar.DAY_OF_MONTH, 250);
int year = c1.get(Calendar.YEAR);
int month = c1.get(Calendar.MONTH) + 1;
int day = c1.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + day + "日");
// 输出:2018年9月18日
} public static void function3() {
Calendar c1 = Calendar.getInstance();
Date date = c1.getTime();
System.out.println(date);
// 输出:Thu Jan 11 15:36:39 CST 2018
}
}

Calendar类的简单应用:

1.求出自己已经出生多少天:

示例:

package demo;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner; //需要知道生日,今日,再做运算即可
public class DateTest {
public static void main(String[] args) throws ParseException {
function();
} public static void function() throws ParseException {
System.out.println("请输入出生日期(格式:YYYY-MM-dd)");
String birthdayString = new Scanner(System.in).next();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
Date birthdayDate = sdf1.parse(birthdayString);
Date todayDate = new Date();
long birthdaySecond = birthdayDate.getTime();
long todaySecond = todayDate.getTime();
long second = todaySecond - birthdaySecond;
if (second < 0) {
System.out.println("还没出生");
} else {
System.out.println(second / 1000 / 60 / 60 / 24);
}
}
}

2.算闰年(这里不用除4等方法)

示例:

package demo;

import java.util.Calendar;
import java.util.Scanner; public class DateTest {
public static void main(String[] args){
function();
} public static void function(){
Calendar c1 = Calendar.getInstance();
System.out.println("请输入年份");
int year = new Scanner(System.in).nextInt();
c1.set(year, 2, 1);//这里没有错误,2就是3月,类中是0-11月
c1.add(Calendar.DAY_OF_MONTH, -1);
int day = c1.get(Calendar.DAY_OF_MONTH);
if(day == 29){
System.out.println("是闰年");
}else{
System.out.println("不是闰年");
}
}
}

Java学习笔记23(Calendar类)的更多相关文章

  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. 【原】Java学习笔记031 - 常用类

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

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

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

  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学习笔记 02 String类、StringBuilder类、字符串格式化和正则表达式

    一.String类一般字符串 声明字符串 >>String str 创建字符串 >>String(char a[])方法用于将一个字符数组创建为String对象 >> ...

  9. java学习笔记之String类

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

随机推荐

  1. elasticsearch 学习笔记

    基本概念 集群和节点的概念1.集群是由节点组成的2.每个集群都有唯一的名字默认是elasticsearch3.cluster.name: niubiwali //集群的名字很重要因为每个节点只是集群的 ...

  2. 7、创建ROS msg和srv

    一.msg和srv介绍 msg: msg文件使用简单的文本格式声明一个ROS message的各个域. 仅须要创建一个msg文件,就能够使用它来生成不同语言的message定义代码. srv:srv文 ...

  3. 注册Azure AD 2.0 应用程序

    作者:陈希章 发表于 2017年3月22日 上一篇 介绍了Microsoft Graph应用程序的一些概念,以及目前还比较普遍的Azure AD 1.0应用程序的注册方式.但正如我多次提到的那样,虽然 ...

  4. Linux基础:文件查找find

    写在前面 在linux的日常管理中,find的使用频率很高,熟练掌握对提高工作效率很有帮助. find的语法比较简单,常用参数的就那么几个,比如-name.-type.-ctime等.初学的同学直接看 ...

  5. effective java笔记之java服务提供者框架

    博主是一名苦逼的大四实习生,现在java从业人员越来越多,面对的竞争越来越大,还没走出校园,就TM可能面临失业,而且对那些增删改查的业务毫无兴趣,于是决定提升自己,在实习期间的时间还是很充裕的,期间自 ...

  6. android 实现银联刷卡机消费后,手动签名的功能

    几天前去物管交物业费,物管工作人员说小区引进高新产品,使用银行卡消费后,不需要拿笔在银联机上签名,直接用手指触摸实现消费签名,当时心想,果然是高科技,机子外形如下左图,签名如下右图.         ...

  7. vertical-align 和 img属性 和 鼠标样式

    一.vertical-align 一)定义:定义行内元素的基线相对于该所在基线的垂直对齐.(只针对行类块inline/inline-block/<img>,块级不适用!) 二)语法:  三 ...

  8. Redis命令与配置

    命令 开启服务端 redis-server.exe redis.conf 客户端连接 redis-cli.exe -h 127.0.0.1 -p 6379 1.连接操作相关的命令 quit:关闭连接( ...

  9. 微信小程序教学第三章第三节(含视频):小程序中级实战教程:视图与数据关联

    § 视图与数据关联 本文配套视频地址: https://v.qq.com/x/page/z0554wyswib.html 开始前请把 ch3-3 分支中的 code/ 目录导入微信开发工具 首先 首先 ...

  10. 环境变量配置文件,本地登录前提示信息/etc/issue

    让配置文件立即生效:source 配置文件 或 . 配置文件 /etc/profile 例:定义了HISTSIZE=1000 /etc/profile.d/*.sh /etc/bashrc ~/.ba ...