编程小龙的博客哟

Java中的Date类与Calendar类笔记

1.Date

1.1java.util.Date

  • 常用方法:
date.toLocaleString()  //常用
getYear()+1900    //getYear()得到现在-1900的差,
getMonth()+1      // 0 -- 11,月份从0开始计数
getDate()   	  //返回此 Date 对象表示的月份中的某一天  1-31
getDay()          //星期  返回此日期表示的周中的某一天 0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday
//时分秒
getHours()
getMinutes()
getSeconds()
getTime()  ===  System.currentTimeMillis()  //返回系统时间戳,常用

1.2java.sql.Date

联系:java.sql.Date extends java.util.Date

两者都有构造方法 Date(long ms)

区别:

  • 1.util.Date 年月日时分秒 / sql.Date 只有 年月日

  • 2.sql.Date 没有无参数构造方法,但是静态方法java.sql.Date.valueOf("1999-12-23")将字符串转换成日期

  • util.Date 有无参数构造方法,但是没有静态方法java.sql.Date.valueOf("1999-12-23")将字符串转换成日期

sql<---->util相互转换:

//子类sql--->父类util 自动转换
Date date = new java.sql.Date(1436250607377L);
System.out.println(date.toString());//多态调用的子类重写的方法

//util---->sql
Date now2 = new Date();
java.sql.Date sdate3 = new java.sql.Date(now2.getTime()); 

日期格式化:

DateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss S E");//模板
df.format(new java.util.Date())

2.Calendar类及常用方法

2.1.概念

  • Calendar日历类功能强大,用来替代 Date

    • 如果只是简单的获取当前的时间,直接使用Date即可

    • Calendar虽然功能很强大,使用并不多,了解它!

2.2.常用方法

Calendar cal = Calendar.getInstance(); //获取Calendar对象
Calendar cal = new GregorianCalendar();//获取宽松的Calendar对象
cal.get(Calendar.YEAR)       //获取年份
cal.set(Calendar.MONTH, 1);  //设置月份
cal.add(Calendar.DATE, 1);   //设置
cal.setTime(sdate);          //通过Date对象设置时间
cal.getActualMaximum(Calendar.DATE)    //获取该月最大天数

2.3.常用方法案例

public static void main(String[] args) {
    //创建一个日历对象(当前的时间)
    //Calendar cal = Calendar.getInstance();
    Calendar cal = new GregorianCalendar();
    System.out.println(cal.toString());

    //获取日历中各个属性
    System.out.println(cal.get(Calendar.YEAR));//输出年份
    System.out.println(cal.get(Calendar.MONTH));//输出月份  0-11
    System.out.println(cal.get(Calendar.DATE));//输出天数
    System.out.println(cal.get(Calendar.DAY_OF_WEEK));//输出一个星期第第几天 3   日1 二3
    System.out.println(Calendar.SATURDAY); //输出预定义的星期六是7     星期天是1   1-7

    //修改日历中的各个属性 2015-7-7 ----->2015-2-1--->2015-2-2
    cal.set(Calendar.MONTH, 1);
    cal.set(Calendar.DATE,1);
    //cal.set(Calendar.DATE,2);
    cal.add(Calendar.DATE, 1);
    System.out.println(cal.toString());
    //Date---->Calendar
    java.sql.Date sdate = Date.valueOf("2000-2-23");
    cal.setTime(sdate);
    System.out.println(cal);
    //其他  5  1--31
    //当前月的最小天数和最大天数
    System.out.println(cal.getActualMinimum(Calendar.DATE));
    System.out.println(cal.getActualMaximum(Calendar.DATE));

    System.out.println(cal.getActualMinimum(Calendar.MONTH));
    System.out.println(cal.getActualMaximum(Calendar.MONTH));
}

案例

  • 万年历:
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    Calendar calendar = Calendar.getInstance();
    System.out.println("请按照yyyy-MM-dd的格式输入您需要查询日历的日期(例如2020-7-1):");
    String dateStr = sc.nextLine();
    DateFormat ds = new SimpleDateFormat("yyyy-MM-dd");
    Date date = null;
    try {
        date = ds.parse(dateStr);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    calendar.setTime(date);

    //当月的第几天
    int day = calendar.get(Calendar.DATE);
    int days = calendar.getMaximum(Calendar.DATE);//算出这个月有多少天
    calendar.set(Calendar.DATE,1); // 设置为当月第一天,看这一天是星期几
    int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);//获取该月第一天是星期几     
    System.out.println("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期天");
    //输出第一天之前的制表符
    if(dayOfWeek>1) {
        for (int i = 1; i < dayOfWeek-1; i++) {
            System.out.print("\t");
        }
    }else {
        for (int i = 1; i < dayOfWeek+5; i++) {
            System.out.print("\t");
        }
    }
    //输出日历
    for (int i = 1; i <= days; i++) {
        calendar.set(Calendar.DATE,i);
        if(i==day) {
            System.out.print("*");
        }
        //如果是星期天就换行输出
        if(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
            System.out.println(i);
        }else {
            System.out.print(i+"\t");
        }
    }
}
posted @ 2020-07-20 17:51  编程小龙  阅读(182)  评论(0)    收藏  举报

(づ ̄3 ̄)づ╭❤~