【蓝桥杯】Java组必备API类 --日期类 Calendar总结

在这里插入图片描述

时间类Calendar

Calendar类是一个抽象类,可以为在某一特定时刻和一组之间的转换的方法如YEARMONTHDAY_OF_MONTHHOUR ,等等,以及用于操纵该日历字段,如获取的日期下个星期。 时间上的瞬间可以用毫秒值表示,该值是从1970年1月1日00:00 00:00.000 GMT(Gregorian)的偏移量。

Calendar的基本使用方法如下所示:

Calendar c = Calendar.getInstance();  //生成一个新的Calendar类
c.set(2022, 3, 24, 10, 10, 10);  //set(int year, int month, int date, int hourOfDay, int minute, int second)
cal.set(Calendar.YEAR, 2022);  //set(int field, int value) 将给定的日历字段设置为给定的值
System.out.println(c.get(Calendar.YEAR));  //输出当前年
System.out.println(c.get(Calendar.MONTH));  //输出当前月
System.out.println(c.get(Calendar.DATE));  //输出当前日
System.out.println(c.get(Calendar.DAY_OF_WEEK));  //输出当前的星期
System.out.println(c.get(Calendar.HOUR_OF_DAY));  //输出当前小时
System.out.println(c.get(Calendar.MINUTE));  //输出当前分钟
System.out.println(c.get(Calendar.SECOND));  //输出当前秒数
System.out.println(c.getTimeInMillis());  //输出当前时间戳
System.out.println(c.getTime());  //输出的是一个Date对象,表示当前的日期

如果我们相对当前生成的Calendar类进行一个日期的加或减,那么我们可以有以下的两种操作方法

c.setTimeInMillis(1L);  //设置时间戳
c.add(Calendar.MINUTE, 1);  //add(int field, int amount) 根据日历的规则,将指定的时间量添加或减去给定的日历字段。
//add的值可以为负数
cal.set(Calendar.YEAR, 2022);  //set(int field, int value) 将给定的日历字段设置为给定的值

Calendar的set和get常用的字段有:

static int AM 
AM字段表示12小时制的当前小时
static int AM_PM 
AM_PM字段表示24小时制的当前小时
static int DATE 
DATE字段编号表示该月的日期。  
static int DAY_OF_MONTH 
get字段编号和 set本月的日期。
static int DAY_OF_WEEK 
get字段编号和 set表示一周中的日期。  
static int DAY_OF_WEEK_IN_MONTH 
get字段编号和 set当月的 set几的序号。
static int DAY_OF_YEAR 
get和 set字段编号, set本年度的日数。  
static int HOUR 
get和 set字段编号, get上午或下午的小时。  
static int HOUR_OF_DAY 
get字段编号和 set当天的小时数。     
static int MILLISECOND 
get和 set字段号表示 get内的 set数。  
static int MINUTE 
get和 set字段编号表示小时内的分钟。  
static int MONDAY 
DAY_OF_WEEK字段的值表示星期一。  
static int MONTH 
get和 set字段号表示月份。  
static int PM 
AM_PM字段的值表示从中午到午夜之前的一天中的一段时间。  
static int SATURDAY 
DAY_OF_WEEK字段的值表示星期六。  
static int SECOND 
get和 set字段编号表示分钟内的第二个。  
static int SEPTEMBER 
MONTH字段的值代表了 公历和朱利安日历中的第九个月。   
protected long time 
这个日历的当前设定时间,以197011日,格林尼治标准时间0:00:00之后的毫秒表示。  
static int WEEK_OF_MONTH 
get和 set字段编号, set当月的周数。  
static int WEEK_OF_YEAR 
get和 set字段编号, set本年度的周数。  
static int YEAR 
get现场编号和 set表示年份。  

注意事项:

  1. 月份不是从1开始,而是从0开始的,也就是说1月的表示数字为0

  2. 星期日表示的数字为1,星期六的表示数字为7

    Calendar c = Calendar.getInstance();
    c.set(2022, 2, 27, 10, 10, 10);
    System.out.println(c.get(Calendar.DAY_OF_WEEK));
    System.out.println(c.getTime());
    

    Calendar c = Calendar.getInstance();
    c.set(2022, 2, 27, 10, 10, 10);
    System.out.println(c.get(Calendar.DAY_OF_WEEK));
    System.out.println(c.getTime());
    

在这里插入图片描述

  1. 设置时间戳的时候如果想得到中国的时间(就是你要用的)那么就要减掉8个小时,具体为什么我也不知道。

    Calendar c = Calendar.getInstance();
    c.setTimeInMillis(0L);
    System.out.println(c.getTime());
    

在这里插入图片描述

有了Calendar这个类,我们做一些日期处理的题的时候就会十分顺利,下面引入一道真题,如下所示:

真题链接

import java.util.Calendar;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        long t = s.nextLong();
        long offset = 8 * 60 * 60 * 1000;  //这里要减掉8个小时
        t -= offset;
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(t);
        System.out.printf("%02d:%02d:%02d\n",c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE), c.get(Calendar.SECOND));
    }
}

如果喜欢我写的文章的话可以关注我,我会继续更新蓝桥杯Java的一些必备知识的

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值