Java中处理时间,日期的类

1.Calendar类(日历类)

Calendar是java util包下的一个工具类,提供了很方便的不同日期格式的处理。

1.1Calendar类常用属性

属性

作用

YEAR

年份

MONTH

月份

DATE

同DAY_OF_MONTH,日期

DAY_OF_MONTH

同DATE,日期

DAY_OF_YEAR

这一天是这一年中的第几天

DAY_OF_WEEK_IN_MONTH

当前月中的第几周

DAY_OF_WEEK

一周中的第几天 / 星期

HOUR

12小时制的时间

HOUR_OF_DAY

24小时制的时间

MINUTE

分钟数

SECOND

秒数

MILLISECOND

毫秒

1.2Calendar类的方法

返回值

方法

作用

public static

Calendar getInstance(TimeZone zone,Locale aLocale)

获得一个日历对象

public int

get(int field)

传入field字段获得给定日历字段的值

public final void

set(int year,int month,int date,int hourOfDay,int minute,int second)

设置日历对象代表的时间

public final void

setTime(Date date)

使用给定的 Date 设置此 Calendar 的时间。

public void

setTimeInMillis(long millis)

用给定的 long 值设置此 Calendar 的当前时间值。

public final Date

getTime()

返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。

public long

getTimeInMillis()

返回此 Calendar 的时间值,以毫秒为单位。

public int

getActualMaximum(int field)

传入Calendar.Date,得到这个月可能有多少天

案例:

public class Demo2 {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        //获取当前的年份
        int i = calendar.get(Calendar.YEAR);
        System.out.println(i);//2022
        //获取月份  需要加1的
        System.out.println(calendar.get(Calendar.MONTH) + 1);//8
        //获取当月的第几天
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//9
        //获取这周的第几天  漂亮国的周日是第1天
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//3
        //获取这一年的第几天
        System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//221
        //获取时
        System.out.println(calendar.get(Calendar.HOUR));//4
        System.out.println(calendar.get(Calendar.MINUTE));//39
        System.out.println(calendar.get(Calendar.SECOND));//3

        //重要的方法  获取当前的时间的 返回值是Date类型的数据
        //可以转为Date类型的数据
        Date time = calendar.getTime();
        System.out.println(time);
        //Tue Aug 09 16:40:21 IRKT 2022
        //这上面时间 对程序员相当不友好!!!
        //通过一个类将日期格式转换一下
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy—MM-dd HH:mm:ss");
        //yyyy-MM-dd HH:mm:ss
        //年-月-天 时:分:秒
        //2022-08-09  16:43:32
        //将这个格式Tue Aug 09 16:40:21 IRKT 2022
        //转换为2022-08-09  16:43:32
        String format = sdf.format(time);
        System.out.println(format);
        //yyyy-MM-dd HH:mm:ss
        //以上能不能胡乱写?不能
        //以后开发中要用的!!

    }
}

2.SimpDateFormat类(日期格式化)

SimpleDateFormat 格式化与解析时间日期类 jdk1.8之前

2.1SimpDateFormat类的构造方法

方法名

作用

SimpleDateFormat()

此构造器返回默认的日期格式:20-6-8 下午12:08

SimpleDateFormat(String)

此构造器返回指定日期格式(常用:yyyy-MM-dd HH:mm:ss)

2.2SimpDateFormat类的方法

方法

作用

format(date)

格式化: 日期—>字符串

parse(date)

解析: 字符串—>日期

案例:

public class SimpleDateFormatDemo {

    public static void main(String[] args) throws ParseException {    //这里需要抛出异常
        //无参构造器
        SimpleDateFormat sdf = new SimpleDateFormat();
        Date date = new Date();

        //format():格式化  返回一个中国日期  日期 ---> 字符串
        System.out.println("------------格式化------------");
        String format = sdf.format(date);
        System.out.println(date); //Mon Jun 08 12:08:57 CST 2020
        System.out.println(format); //20-6-8 下午12:08

        //parse():解析: 格式化的逆过程  字符串 ---> 日期
        System.out.println("-----------解析-----------");
        String s1 = "20-6-8 下午12:08";
        Date parse = sdf.parse(s1);
        System.out.println(parse);
        //有参构造器
        System.out.println("----------有参构造器:指定日期格式---------");
        //格式化
        new SimpleDateFormat();
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format1 = sdf1.format(date);
        System.out.println(format1);
        //解析
        Date date1 = sdf1.parse(format1);
        System.out.println(date1);
    }
        String date = "2020-10-21";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date1 = sdf.parse(date);
        java.sql.Date date2 = new java.sql.Date(date1.getTime());
        System.out.println(date2);
    }
}

3.LocalDate类(日历日期类)

简单一句话,Date用来表示时间点,LocalDate类用来表示日历日期。

还有LocalTime,LocalDateTime类(常用,时间日期类)

3.1LocalDate类的常用方法

方法名

作用

LocalDate.of(int year,int month,int day)

提供日期构造一个特定日期的对象;

LocalDate.now()

获得当前日期,返回LocalDate类;

getYear()

获得年份,返回int;

getMonthValue()

获得月份,返回int;

getDayOfMonth()

获得天数,返回int;

getDayOfWeek()

获得当前是周几,以DayOfWeek类的一个实例返回;

plusDays(int n),minusDays(int n)

生成当前日期之后或之前n天的日期;

案例:

public class TimeDemo {

    public static void main(String[] args) {
        //获取对象
        LocalTime localTime = LocalTime.now();
        LocalDate localDate = LocalDate.now();
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localTime);  //23:34:04.762
        System.out.println(localDate);  //2020-06-08
        System.out.println(localDateTime);  //2020-06-08T23:34:04.762

        LocalDateTime localDateTime1 = LocalDateTime.of(2020, 10, 21, 10, 10, 10, 100000000);
        System.out.println(localDateTime1);  //2020-10-21T10:10:10.100

        System.out.println(localDateTime.getDayOfMonth());  //8
        System.out.println(localDateTime.getDayOfWeek());  //MONDAY
        System.out.println(localDateTime.getDayOfYear());  //160
        System.out.println(localDateTime.getMonth());      //JUNE
        System.out.println(localDateTime.getMonthValue());  //6
        System.out.println(localDateTime.getMinute());   //34

        LocalDateTime localDateTime2 = localDateTime.withDayOfMonth(30);
        System.out.println(localDateTime);   //2020-06-08T23:34:04.762
        System.out.println(localDateTime2);   //2020-06-30T23:34:04.762

        LocalDateTime localDateTime3 = localDateTime.plusMonths(3);
        System.out.println(localDateTime);   //2020-06-08T23:34:04.762
        System.out.println(localDateTime3);   //2020-09-08T23:34:04.762
    
        LocalDateTime localDateTime4 = localDateTime.minusMonths(1);
        System.out.println(localDateTime);   //2020-06-08T23:34:04.762
        System.out.println(localDateTime4);   //2020-05-08T23:34:04.762
    }
}