java常用类Day11

Calender类

  • Calendar提供了获取或设置各种日历字段的方法

  • 构造方法

    • protected Calendar( ):由于修饰符是protected,所以无法直接创建对象
  • 其他方法

方法名说明
static Calendar getlnstance使用时默认时区和区域获取日历
void set(int year,int month,int date,int hourofday,int minute,int second)设置日历的年、月、日、时、分、秒
int get(int field)返回给定日历字段的值。字段比如年、月、日等
void setTime(Date date)用给定的Date设置此日历的时间。Date-Calendar
Date getTime()返回一个Date表示此日历的时间。Calendar-Date
void add(int field,int amount)按照日历的规则,给指定字段添加或减少时间量(加一个负数即为减)
long getTimelnMillies()毫秒为单位返回该日历的时间值
  • 实例
public class Demo01 {
    public static void main(String[] args) {
        //创建Calendar对象
        Calendar calendar = new Calendar();
        
    }
}

这样的形式是错误的,会抛出异常

java: java.util.Calendar是抽象的; 无法实例化

不能用new去创建Calendar对象

正确应为

public class Demo01 {
    public static void main(String[] args) {
        //创建Calendar对象
        Calendar calendar=Calendar.getInstance();
        
    }
}

调用getInstance()方法来创建对象

在打印日期时,尽量避免使用toString()方法,因为打印的东西过多

public class Demo01 {
    public static void main(String[] args) {
        //创建Calendar对象
        Calendar calendar=Calendar.getInstance();
        System.out.println(calendar.toString());
    }
}

这样的输出结果会显得冗余

java.util.GregorianCalendar[time=1628301257826,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=7,WEEK_OF_YEAR=32,WEEK_OF_MONTH=1,DAY_OF_MONTH=7,DAY_OF_YEAR=219,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=9,HOUR_OF_DAY=9,MINUTE=54,SECOND=17,MILLISECOND=826,ZONE_OFFSET=28800000,DST_OFFSET=0]

可以看出,在第三行给出了日期,但极其不好找,故不推荐使用

合适的做法如下

public class Demo01 {
    public static void main(String[] args) {
        //创建Calendar对象
        Calendar calendar=Calendar.getInstance();
        System.out.println(calendar.getTime().toLocaleString());
    }
}

此时的输出结果为

2021-8-7 10:05:00

如果我们要打印出当前 年月日

//2.获取时间信息
//获取年
int year=calendar.get(Calendar.YEAR);//get(int field),说明里面是需要一个整数的,Calendar类中提供了很多静态常量。如“年”:YEAR=1,这时候你既可以写“YEAR”来获取年,也可以写“1”,二者作用相同,但前者易读,后者简洁
//月
int month=calendar.get(Calendar.MONTH);//有一个需要注意的点:月份在java中是从0-11。0即表示一月,11表示12月,因此在打印月份时需要月份+1
//日
int day=calendar.get(Calendar.DAY_OF_MONTH);//DAY_OF_MONTH可以换Date
//小时
int hour=calendar.get(Calendar.HOUR);//HOUR:12小时时制;HOUR_OF_DAY:24小时时制
//分钟
int minute= calendar.get(Calendar.MINUTE);
//秒
int second=calendar.get(Calendar.SECOND);
//3.打印时间信息
System.out.println(year+"年"+(month+1)+"月"+day+"日"+hour+":"+minute+":"+second);

这样就可以获取并打印出当前时间

2021-8-9 9:45:31
2021899:45:31

不仅能打印出当前时间,我们也可以对时间进行修改

//4.修改时间信息
Calendar calendar2=Calendar.getInstance();
calendar2.set(Calendar.DAY_OF_MONTH,8);//今天是8月9日,如果我想修改为昨天的日期,那么将“日”修改为8即可
System.out.println(calendar2.getTime().toLocaleString());

修改之后会变成

2021-8-8 9:45:31

如果我们觉得修改比较麻烦,那么可以试试对时间直接进行添加或减少

//5.可使用add方法对时间进行添加或减少
        calendar2.add(Calendar.HOUR,1);//这句的意思是给小时数上加一
        System.out.println(calendar2.getTime().toLocaleString());

输出为

2021-8-8 17:27:38

再还有一些补充的方法

//补充方法
int max=calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);//打印出来这个月的最大值
int min=calendar2.getActualMinimum(Calendar.DAY_OF_MONTH);//打印出来这个月的最小值
System.out.println(max);
System.out.println(min);

输出为

31
1

完整代码为

package com.commonClass.calendarClass;

import java.util.Calendar;

public class Demo01 {
    public static void main(String[] args) {

        //1.创建Calendar对象
        Calendar calendar=Calendar.getInstance();//Calendar对象是“受保护的”,所以是无法用new来创建对象的
        System.out.println(calendar.getTime().toLocaleString());

        //2.获取时间信息
        //获取年
        int year=calendar.get(Calendar.YEAR);//get(int field),说明里面是需要一个整数的,Calendar类中提供了很多静态常量。如“年”:YEAR=1,这时候你既可以写“YEAR”来获取年,也可以写“1”,二者作用相同,但前者易读,后者简洁
        //月
        int month=calendar.get(Calendar.MONTH);//有一个需要注意的点:月份在java中是从0-11。0即表示一月,11表示12月,因此在打印月份时需要月份+1
        //日
        int day=calendar.get(Calendar.DAY_OF_MONTH);//DAY_OF_MONTH可以换Date
        //小时
        int hour=calendar.get(Calendar.HOUR);//HOUR:12小时时制;HOUR_OF_DAY:24小时时制
        //分钟
        int minute= calendar.get(Calendar.MINUTE);
        //秒
        int second=calendar.get(Calendar.SECOND);

        //3.打印时间信息
        System.out.println(year+"年"+(month+1)+"月"+day+"日"+hour+":"+minute+":"+second);

        //4.修改时间信息
        Calendar calendar2=Calendar.getInstance();
        calendar2.set(Calendar.DAY_OF_MONTH,8);//今天是8月9日,如果我想修改为昨天的日期,那么将“日”修改为8即可
        System.out.println(calendar2.getTime().toLocaleString());
        
        //5.可使用add方法对时间进行添加或减少
        calendar2.add(Calendar.HOUR,1);//这句的意思是给小时数上加一
        System.out.println(calendar2.getTime().toLocaleString());

        //补充方法
        int max=calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);//打印出来这个月的最大值
        int min=calendar2.getActualMinimum(Calendar.DAY_OF_MONTH);//打印出来这个月的最小值
        System.out.println(max);
        System.out.println(min);
    }
}

完整输出结果为

2021-8-9 16:27:38
2021894:27:38
2021-8-8 16:27:38
2021-8-8 17:27:38
31
1
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值