Java常用类之Calendar类

简介: Java常用类之Calendar类

1.Calendar类


Calendar是一个抽象类。时间点(某一时刻)


getInstance()

//获取日历(使用默认时区和语言环境获取一个日历)。不是通过子类创建,而是通过父类方法getInstance()返回一个calendar


public int get(int field);//参数是日历字段值 ,月份的统计是从0到11的


void set(); //设置日历字段。


abstract void add(int field,int amount);

//根据日历规则,为给定的日历字段添加或者减去指定的时间量。


以下返回值类型为int:

年: calendar.get(Calendar.YEAR);

月:  calendar.get(Calendar.MONTH);

日:  calendar.get(Calendar.DAY_OF_MONTH);

星期: calendar.get(Calendar.DAY_OF_WEEK);

时: calendar.get(Calendar.HOUR_OF_DAY);

分: calendar.get(Calendar.MINUTE);

秒: calendar.get(Calendar.SECOND);


2.示例代码


2.1 Calendar类的日历方法练习

import java.util.*;
import java.text.*;
class  CalendarDemo
{
  public static void main(String[] args) 
  {
    Calendar c = Calendar.getInstance();
    System.out.println("以当前具体时间为:");
    printCalendar(c); //调用日历方法
    System.out.println();//换行
    System.out.println();
    //c.set(2013,5,15); 设置时间
    c.add(Calendar.YEAR,5);//在当前时间基础上加5年
    c.add(Calendar.MONTH,5);//在当前时间基础上加5个月
    c.add(Calendar.DAY_OF_MONTH,-5);//在当前时间基础上减五天
    System.out.println("以当前时间为基础,5年5个月后,再减去5天的具体日期时间是:");
    printCalendar(c); //调用日历方法
  }
  public static void printCalendar(Calendar c)
  {
    //查表法
    String[] month={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"} ;
    String[] week={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
    int index=c.get(Calendar.MONTH);
    int index1=c.get(Calendar.DAY_OF_WEEK);
     //System.out.println(c);
    System.out.println(c.get(Calendar.YEAR)+"年");
    //System.out.println(c.get(Calendar.MONTH)+"月");
    System.out.print(month[index]);
    System.out.println(c.get(Calendar.DAY_OF_MONTH)+"日");
    //System.out.println("星期"+c.get(Calendar.DAY_OF_WEEK));
    System.out.println(week[index1]);
    System.out.print(c.get(Calendar.HOUR_OF_DAY)+"时");
    System.out.print(c.get(Calendar.MINUTE)+"分");
    System.out.println(c.get(Calendar.SECOND)+"秒");
    /*
    获取当前年份:
    Date time=new Date();
    SimpleDateFormat q= new SimpleDateFormat("yyyy");
    String qq=q.format(time);
    System.out.println(qq);
    */
  }
}


运行结果:

image.png

2.2 请满足以下两个要求:


1,获取任意年的二月有多少天。

思路:根据指定年设置一个时间就是

c.set(year,2,1)//某一年的3月1日。

c.add(Calenar.DAY_OF_MONTH,-1);//3月1日,往前推一天,就是2月最后一天。


2,获取昨天的现在这个时刻。

c.add(Calenar.DAY_OF_MONTH,-1);


代码如下:

import java.util.Scanner;
import java.util.*;
import java.text.*;
class CalendarTest
{
  public static void main(String[] args) 
  {
    sop("获取昨天此刻的时间:");
    Calendar time=Calendar.getInstance();
    time.add(Calendar.DAY_OF_MONTH,-1);//求昨天日期
    sop(time.get(Calendar.YEAR)+"年");
    sop((time.get(Calendar.MONTH)+1)+"月");
    sop(time.get(Calendar.DAY_OF_MONTH)+"日");
    sop(time.get(Calendar.HOUR)+"时");
    sop(time.get(Calendar.MINUTE)+"分");
    sop(time.get(Calendar.SECOND)+"秒"+"\n");
    sop("\n");//换行
    Scanner input=new Scanner(System.in);
    sop("请输入一个年份:");
    int year=input.nextInt();
    time.set(year,2,1);//设置某一年的3月1日
    time.add(Calendar.DAY_OF_MONTH,-1);//减去一天
    sop("\n"+year+"年的2月有"+time.get(Calendar.DAY_OF_MONTH)+"天"+"\n");
  }
  //打印方法
  public static void sop(Object o)
  {
    System.out.print(o);
  }
}

运行结果:

image.png

目录
相关文章
|
2天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
23 3
|
6天前
|
Java 编译器
Java Character 类
4月更文挑战第13天
|
7天前
|
存储 Java
Java基础教程(7)-Java中的面向对象和类
【4月更文挑战第7天】Java是面向对象编程(OOP)语言,强调将事务抽象成对象。面向对象与面向过程的区别在于,前者通过对象间的交互解决问题,后者按步骤顺序执行。类是对象的模板,对象是类的实例。创建类使用`class`关键字,对象通过`new`运算符动态分配内存。方法包括构造函数和一般方法,构造函数用于对象初始化,一般方法处理逻辑。方法可以有0个或多个参数,可变参数用`类型...`定义。`this`关键字用于访问当前对象的属性。
|
11天前
|
Java Shell
Java 21颠覆传统:未命名类与实例Main方法的编码变革
Java 21颠覆传统:未命名类与实例Main方法的编码变革
12 0
|
11天前
|
Java
Java 15 神秘登场:隐藏类解析未知领域
Java 15 神秘登场:隐藏类解析未知领域
15 0
|
13天前
|
安全 Java
append在Java中是哪个类下的方法
append在Java中是哪个类下的方法
21 9
|
13天前
|
JavaScript Java 测试技术
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
30 0
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
|
14天前
|
存储 安全 Java
java多线程之原子操作类
java多线程之原子操作类
|
15天前
|
Java
Java中的异常类总结
Java中的异常类总结
|
15天前
|
Java
Java中的多线程实现:使用Thread类与Runnable接口
【4月更文挑战第8天】本文将详细介绍Java中实现多线程的两种方法:使用Thread类和实现Runnable接口。我们将通过实例代码展示如何创建和管理线程,以及如何处理线程同步问题。最后,我们将比较这两种方法的优缺点,以帮助读者在实际开发中选择合适的多线程实现方式。
21 4