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. MySQL 索引管理与执行计划

    1.1 索引的介绍 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息.如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息. ...

  2. android代码混淆笔记

    混淆处理的apk被反编译后代码中包名类名等都变成abcd之类.非常难看懂. 使用代码混淆.启用混淆器,对相关文件进行编辑,然后打包签名就能够了: ------------ 在2.3的版本号中,项目中有 ...

  3. Mybatis中如何将POJO作为参数传入sql

    今天在工作时,需要将获取的用户的注册信息插入数据库,开始的做法是将所有的model的属性作为DAO接口的参数,后来想想不对劲,要是有100个属性,那我这个接口岂不是要有100个参数传进来? 于是我就考 ...

  4. 推荐的五款市面上常用的免费CMS建站系统

    我做设计也有不少年头了,很多客户或者朋友找我做网站的时候,一般问我的是用什么软件系统给他们做.大部分客户希望用的软件是免费的.所以今天给大家介绍五款我自己用过还不错的,重点是还免费的建站系统. Met ...

  5. /etc/services保存了服务、端口、协议

  6. 【CSS3】动画animation-关键帧keyframes

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. TCP/IP的那些事--子网掩码

    当前互联网使用的主要是IPv4协议,它是第一个被广泛使用,构成现今互联网的基础的协议.但是,随着用户数量的增多,IPv4包含的IP资源在不断减少.或许你会想,不是还有IPv6吗?IPv6的容量足以应付 ...

  8. Django的设计模式

    MVC模式 MVC将应用程序分解为三个组成部分:mode(模型).view(视图).control(控制器),其中: M 管理应用程序的状态(通常存储到数据库中),并榆树改变状态的行为(或者叫&quo ...

  9. 快速学习Bash

    作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载. Shell是Linux下经典的文本互动方式,而Bash是现在最常用的一种Shell.我在这里总结了Bash ...

  10. c#创建access数据库和数据表

      由于在程序中使用了ADOX,所以先要在解决方案中引用之,方法如下: 解决方案资源管理器(项目名称)-->(右键)添加引用-->COM--> Microsoft ADO Ext. ...