Java学习笔记:日期相关的类Date,DateFormat和Calendar

  在计算机中,把1970年1月1日00:00:00定为基准时间,每个度量单位是毫秒。使用long类型的变量来表示时间,从基准时间往前几亿年,往后几亿年的时间都足够表示。
  Java获得当前系统时刻方式为:

System.currentTimeMillis();

一、Date类

  Date类中大部分方法都被遗弃,这里记录3个方法的使用。

1.1 getTime()方法

作用:获取系统当前的时刻。
说明:getTime()方法,其实就是调用的System.currentTimeMillis()方法

		Date date = new Date();
		System.out.println(date.getTime());

1.2 after()方法和before()方法

作用:判断两个时间的先后

		Date date = new Date();
		System.out.println(date);
		
		Date date1 = new Date(2000);
		System.out.println(date1);
		
		System.out.println(date.after(date1));//返回true
		System.out.println(date1.before(date));//返回true

二、DateFormat类和SimpleDateFormat类

  先说明DateFormat类和SimpleDateFormat类的关系。DateFormat类是一个抽象类,SimpleDateFormat是它的子类。
  作用: 把日期对象转换成指定格式的字符串
格式化字符

2.1 构造器

		DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");

2.2 format()方法

**作用:**将日期对象转换成字符串

		// 将日期对象转换成字符串
        Date date = new Date();
        String strDate1 = df1.format(date);
        System.out.println(strDate1);

        String strDate2 = df2.format(date);
        System.out.println(strDate2);

2.3 parse()方法

作用: 将指定格式字符串转换成日期对象

   		// 将指定格式的字符串,转换成日期对象
        String strDate01 = "2029-07-18 12:43:23";
        String strDate02 = "2029-07-18";

        Date date01 = df1.parse(strDate01);
        System.out.println("date01:" + date01);
        Date date02 = df2.parse(strDate02);
        System.out.println("date02:" + date02);

三、Calendar类和GregorianCalendar类

  GregorianCalendar是Calendar的具体类,提供了世界上大多数国家和地区的标准日历系统。
  注意!!! 月份表示一月是0,二月是1,十二月是11。父类Calendar使用常量JANUARY,FEBRUARY来表示

3.1 get()方法

作用: 获取指定日期,年月日周等信息

 		Calendar calendar = new GregorianCalendar();
        int year = calendar.get(Calendar.YEAR);
        //这里0表示1月,1表示2月,...,11表示12月。
        int month = calendar.get(Calendar.MONTH);
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        //这里1表示周日,2表示周一,...,7表示周六
        int weekday = calendar.get(Calendar.DAY_OF_WEEK);

3.2 set()方法

作用: 设置日期

		// 设置日期
        Calendar calendar2 = new GregorianCalendar();
        calendar2.set(Calendar.YEAR,2019);
        System.out.println(calendar2.get(Calendar.YEAR

3.3 add()方法

作用: 日期推算

		// 日期推算
        Calendar calendar3 = new GregorianCalendar();
        calendar3.add(Calendar.YEAR,2);
        System.out.println(calendar3.get(Calendar.YEAR));

3.4 getTime()方法和setTime()方法

作用: Date对象和Calendar对象相互转换

		// calendar对象变成日期对象
        Date date = calendar3.getTime();
        Calendar calendar4 = new GregorianCalendar();
        // 日期对象变成calendar对象
        calendar4.setTime(new Date());

四、可视化日历例子

结果

在这里插入图片描述

代码

package cn.edu.ucas.gqlearn;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

/**
 * @Author: hyk
 * @Date: 2020/7/18
 * @version: 1.0
 */
public class ViewCalendar {
    public static void main(String[] args) throws ParseException {
        System.out.println("请输入日期(格式为:2020-07-18)");
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        // 1. 解析字符串为date
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date date = df.parse(str);
        // 2. 将date转为Calendar类型
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        // 3. 当前是几号
        int currentDate = calendar.get(Calendar.DAY_OF_MONTH);
        int daysOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        // 4. 将时间设为当月1日
        calendar.set(Calendar.DAY_OF_MONTH,1);

        System.out.print("日\t" + "一\t" + "二\t" + "三\t" + "四\t" + "五\t" + "六\t" );
        System.out.println();

        for (int i = 1; i < calendar.get(Calendar.DAY_OF_WEEK); i++) {
            System.out.print("\t");
        }
        for (int i = 1; i <= daysOfMonth; i++) {
            if(currentDate == i){
                System.out.print(i + "*\t");
            }else{
                System.out.print(i + "\t");
            }
            if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY){
                System.out.println();
            }
            calendar.add(Calendar.DAY_OF_MONTH,1);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值