Java API - Date-SimpleDateFormat-Calendar的常用方法介绍

54 阅读6分钟

日期与时间 Date类 Date类概述

Date类代表当前所在系统的日期时间信息。

Date的构造器

名称 说明 public Date() 创建一个Date对象,代表的是系统当前此刻日期时间。 public Date(long time) 把时间毫秒值转换成Date日期对象。 Date常用方法

名称 说明 getTime() 返回从1970年1月1日 00:00:00走到此刻的总的毫秒数 setTime(long time) 设置日期对象的时间为当前时间毫秒值对应的时间 Date类获取到的时间对象有两种格式:

时间形式一:日期类表示时间的代码

public class DateDemo { public static void main(String[] args) { // 创建日期对象 Date date = new Date(); System.out.println(date); // Wed Oct 12 16:16:56 CST 2022 } } 1 2 3 4 5 6 7 时间格式二: 事件毫秒值表示时间的代码

public class DateDemo { public static void main(String[] args) { // 创建日期对象 Date date = new Date();

    // 获取当前时间的毫秒值
    System.out.println(date.getTime()); // 1665562823334
}

} 1 2 3 4 5 6 7 8 9 时间毫秒值 -> 日期对象的两种方法

方式一: 通过Date类的构造器

public class DateDemo2 { public static void main(String[] args) { // 获取当前时间的毫秒值 long time = System.currentTimeMillis();

    // 方式一: 通过构造器根据毫秒值得到日期对象
    Date date1 = new Date(time);
    System.out.println(date1); // Wed Oct 12 16:39:53 CST 2022
}

} 1 2 3 4 5 6 7 8 9 10 方式二: 通过setTime方法根据毫秒值获取日期对象

public class DateDemo2 { public static void main(String[] args) { // 获取当前时间的毫秒值 long time = System.currentTimeMillis();

    // 方式二: 通过setTime方法根据毫秒值获取日期对象
    Date date2 = new Date();
    date2.setTime(time);
    System.out.println(date2); // Wed Oct 12 16:39:53 CST 2022
}

} 1 2 3 4 5 6 7 8 9 10 11 小结:

日期对象创建的两种方式:

public Date(); // 创建日期对象

public long getTime(); // 创建时间毫秒值

时间毫秒值恢复成日期对象的两种方式:

public Date(long time); // 方式一: 通过构造器

public void setTime(long time); // 方式二: 通过setTime方法

SimpleDateFormat类 上面我们分别讲解了获取日期对象格式和获取时间毫秒值的两种方式, 但是这两种展示时间的格式都不是我们想要的;

在开发中常见的展示时间的格式是类似于下面这样的:

2022-4-23 08:20:20, 2022/4/23 08:20:20, 2022.4.23 08:20:20, 2022年4月23日 08:20:20 因此我们可以通过SimpleDateFormat类完成日期时间的格式化操作

SimpleDateFormat类的构造器:

构造器 说明 public SimpleDateFormat(String pattern) 构造一个SimpleDateFormat,使用指定的格式 SimpleDateFormat类的格式化方法:

格式化方法 说明 format(Date date) 将日期格式化成日期/时间字符串 format(Object time) 将时间毫秒值式化成日期/时间字符串 格式化的时间形式的常用的模式对应关系如下:

演示代码:

格式化日期对象

public class DateDemo3 { public static void main(String[] args) { // 获取当前日期对象 Date date = new Date();

    // 格式化日期对象(指定最终格式化的形式)
    SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd日");
    String newDate = sf.format(date);
    System.out.println(newDate);
}

} 1 2 3 4 5 6 7 8 9 10 11 格式化时间毫秒值

public class DateDemo3 { public static void main(String[] args) { Date date = new Date(); // 获取当前日期毫秒值 long time = date.getTime();

    // 格式化日期对象(指定最终格式化的形式)
    SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE"); // EEE表示星期几
    String newDate = sf.format(time);
    System.out.println(newDate);
}

} 1 2 3 4 5 6 7 8 9 10 11 12 SimpleDateFormat可以解析字符串时间成为日期对象:

2011-11-11 11:11:22 -> Date日期对象

通过parse方法解析:

需要注意的是: 使用parse方法时编辑器会提醒代码异常, 我们需要alt+回车将异常抛出

解析方法 说明 parse(String source) 从给定字符串的开始解析文本以生成日期 案例

例如: 将字符串 “2021年08月06日11点11分11秒” 转为日期对象

public class DateDemo4 { public static void main(String[] args) throws ParseException { String dateStr = "2021年08月06日11点11分11秒";

    // 把字符串时间解析成日期对象
    // 格式必须与被解析时间格式完全一样
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH点mm分ss秒");
    Date d = sdf.parse(dateStr);
    System.out.println(d); // Fri Aug 06 11:11:11 CST 2021
}

} 1 2 3 4 5 6 7 8 9 10 11 Calendar类 Calendar概述:

Calendar代表了系统此刻日期对应的日历对象。

Calendar是一个抽象类,不能直接创建对象。

Calendar日历类创建日历的方法

方法名 说明 getInstance() 获取当前日历对象 // 获取系统此刻日历对象 Calendar cal = Calendar.getInstance(); 1 2 直接打印日历对象cal, 会显示日历对象的所有字段

Calendar cal = Calendar.getInstance(); System.out.println(cal); 1 2 Calendar常用方法

方法名 说明 get(int field) 取日期中的某个字段信息。 set(int field,int value) 修改日历的某个字段信息。 add(int field,int amount) 为某个字段增加/减少指定的值 getTime() 拿到此刻日期对象。 getTimeInMillis() 拿到此刻时间毫秒值 get方法获取日历中某个字段的信息, 可以获取年月日时分秒等等

public class CalendarDemo { public static void main(String[] args) { // 获取系统此刻日历对象 Calendar cal = Calendar.getInstance();

    // 获取年月日...
    System.out.println(cal.get(Calendar.YEAR));
    System.out.println(cal.get(Calendar.MONTH + 1));
    System.out.println(cal.get(Calendar.DAY_OF_MONTH)); // 1月中第几天
    System.out.println(cal.get(Calendar.DAY_OF_YEAR)); // 1年中第几天
}

} 1 2 3 4 5 6 7 8 9 10 11 12 set方法修改日历中的某个字段

public class CalendarDemo { public static void main(String[] args) { // 获取系统此刻日历对象 Calendar cal = Calendar.getInstance();

    // 获取年
    System.out.println(cal.get(Calendar.YEAR)); // 2022
    // 修改年
    cal.set(Calendar.YEAR, 2019);
    System.out.println(cal.get(Calendar.YEAR)); // 2019
}

} 1 2 3 4 5 6 7 8 9 10 11 12 add方法为某个字段增加/减少指定的值

public class CalendarDemo { public static void main(String[] args) { // 获取系统此刻日历对象 Calendar cal = Calendar.getInstance();

    // 增加10年
    cal.add(Calendar.YEAR, 10);
    // 增加20分钟
    cal.add(Calendar.MINUTE, 20); 
    System.out.println(cal.get(Calendar.YEAR)); // 2032
    System.out.println(cal.get(Calendar.MINUTE)); // 31
}

} 1 2 3 4 5 6 7 8 9 10 11 12 13 getTime方法拿到此刻日期对象。

public static void main(String[] args) { // 获取系统此刻日历对象 Calendar cal = Calendar.getInstance();

// 获取此刻日期对象
Date d = cal.getTime();
System.out.println(d); // Fri Oct 14 16:13:40 CST 2022

} 1 2 3 4 5 6 7 8 getTimeInMillis方法拿到此刻时间毫秒值

public static void main(String[] args) { // 获取系统此刻日历对象 Calendar cal = Calendar.getInstance();

// 获取此刻时间毫秒值
long time = cal.getTimeInMillis();
System.out.println(time);

}