Java核心思想读书笔记---日期GregorianCalendar类

1、学习了 GregorianCalendar 类解决日期问题,Date类暂时不推荐使用

注意事项

  • Calendar类是一个静态类,用于方便通过get访问GregorianCalendar类中的时间
  • Calendar类当中,Month是从0开始的,也就是1月份是0,12月份是11
  • Calendar类当中,DAY_OF_WEEK 注意,1是星期天认为是一个星期的开始,2是星期一,以此类推

测试代码

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // 多种构造器
        // 无参数构造器
        GregorianCalendar date1 = new GregorianCalendar();
        // 年月日构造器,注意月份是从0开始的
        GregorianCalendar date2 = new GregorianCalendar(1999,3,10);
        // 使用calendar常量构造,Calendar.JANUARY = 0
        GregorianCalendar date3 = new GregorianCalendar(1999, Calendar.JANUARY,19);
        // 年月日,精确到时间
        GregorianCalendar date4 = new GregorianCalendar(1999,Calendar.FEBRUARY,10,23,59,59);


        // 更改器与访问器
        // 访问器
        GregorianCalendar date = new GregorianCalendar();
        int year = date.get(Calendar.YEAR);
        int month = date.get(Calendar.MONTH);
        int day = date.get(Calendar.DAY_OF_MONTH);
        System.out.printf("Now the time is %d %d %d\n",year,month + 1,day);
        // 修改器
        date.set(Calendar.YEAR,1999);
        date.set(Calendar.MONTH,Calendar.APRIL);
        date.set(Calendar.DAY_OF_MONTH,10);
        year = date.get(Calendar.YEAR);
        month = date.get(Calendar.MONTH);
        day = date.get(Calendar.DAY_OF_MONTH);
        System.out.printf("The modified time is %d %d %d\n",year,month + 1,day);
        date.set(1999,Calendar.APRIL,10);

        // 日期输出
        // 输出现在是这周的第几天 warning 星期天是第一天
        System.out.println(date.get(Calendar.DAY_OF_WEEK) - 1);
        // 输出现在是一年的第几天
        System.out.println(date.get(Calendar.DAY_OF_YEAR));
        // 输出现在是这个月的第几天
        System.out.println(date.get(Calendar.DAY_OF_MONTH));
    }
}

例题 HDU2005

给定了日期,计算当前日期是这一年的第几天,读入字符串之后,利用split函数分割字符串,然后构造一个GregorianCalendar 类,并且赋值之后,利用DAY_OF_YEAR来直接输出即可,注意set月份的时候,是从0开始的,因此需要减一。

public static void solve(){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String str = sc.next();
            String[] strArr = str.split("/");
            GregorianCalendar date = new GregorianCalendar();
            date.set(Integer.valueOf(strArr[0]),Integer.valueOf(strArr[1]) - 1,Integer.valueOf(strArr[2]));
            System.out.println(date.get(Calendar.DAY_OF_YEAR));
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值