日期相关API(before Java8)

!!! note 目录

Java 8 之前的日期和时间 API

在 Java 中,处理日期和时间的 API 分为两个主要的类别:Java 8 之前的 API 和 Java 8 及之后引入的新 API。以下是详细介绍这些 API 及其使用方法。

1.1 java.util.Date

  • 用于表示特定的时间,精度为毫秒。
  • 常用方法:
    • Date(): 创建一个表示当前时间的 Date 对象。
    • Date(long date): 创建一个表示从1970年1月1日00:00:00 GMT 开始的特定毫秒数的 Date 对象。
    • getTime(): 返回自1970年1月1日00:00:00 GMT以来的毫秒数。
    • setTime(long time): 设置时间。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Test
public void testDateConstructor(){
//获取系统当前时间
Date date = new Date();
System.out.println(date);

//获取指定的时间(参数的单位是毫秒数)
Date date1 = new Date(1000);
System.out.println(date1);

//获取当前系统时间的前10分钟时间
Date date2 = new Date(System.currentTimeMillis()-1000*60*10);
System.out.println(date2);
}

1.2 java.text.SimpleDateFormat

  • 用于格式化和解析日期。
  • 常用方法:
    • format(Date date): 将日期格式化为字符串。
    • parse(String source): 将字符串解析为日期。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 /**
* 日期格式化,需要借助:
* java.text.DateFormat
* java.text.SimpleDateFormat(用这个,DateFormat是SimpleDateFormat的父类。)
*/
@Test
public void testDateormat() throws ParseException {
Date date = new Date();
// 1、java.util.Date ---> java.lang.String
//格式化
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); //指定日期格式

//调用format方法完成格式化
String s = format.format(date);
System.out.println(s);

// 2、java.lang.String ---> java.util.Date
// 日期字符串
String strDate = "2008-08-08 08:08:08 888";

// 创建日期格式化对象
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); //strDate要和yyyy-MM-dd HH:mm:ss SSS格式一致。

// 解析:将字符串String转换成Date
Date date1 = sdf2.parse(strDate);

System.out.println(date1);
}

1.3 java.util.Calendar

  1. getInstance(): 获取一个 Calendar 对象并初始化为当前日期和时间。
1
2
3
4
5
6
@Test
public void testCalendar(){
// 获取当前时间的日历对象(调用一个静态方法)
Calendar instance = Calendar.getInstance();
System.out.println(instance);
}
  1. get(int field): 返回给定日历字段的值。
1
2
3
4
5
6
7
8
9
@Test
public void testCalendar(){
// 获取当前时间的日历对象(调用一个静态方法)
Calendar instance = Calendar.getInstance();

//获取日历中的年
int year = instance.get(Calendar.YEAR);
System.out.println(year);
}
  1. set(int field, int value): 设置给定日历字段的值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Test
public void testCalendarSet() throws ParseException {
// 获取系统当前时间的日历
Calendar cal = Calendar.getInstance();
// 设置该日历的年是2008年
cal.set(Calendar.YEAR, 2008);
//cal.set(Calendar.MONTH, 10);
// 获取日历的年月日信息
System.out.println(cal.get(Calendar.YEAR) + "年" + (cal.get(Calendar.MONTH) + 1) + "月" + cal.get(Calendar.DAY_OF_MONTH) + "日");
// 设置日历是2008年8月8日 8时8分8秒的日历
cal.set(2008, Calendar.AUGUST,8,8,8,8);
// 获取日历的年月日信息
System.out.println(cal.get(Calendar.YEAR) + "年" + (cal.get(Calendar.MONTH) + 1) + "月" + cal.get(Calendar.DAY_OF_MONTH) + "日");
}
  1. add(int field, int amount): 在给定的日历字段中添加或减去指定的时间量。
1
2
3
4
5
6
@Test
public void testCalendarAdd(){
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR,-2);
System.out.println(calendar.get(Calendar.YEAR));
}
  1. setTime(new Date()):通常用于将日历对象设置为当前时间。
1
2
3
4
5
6
7
8
9
@Test
public void testCalendarSetTime() throws ParseException {
String strDate="2020-07-07 09:00:00";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date parse = format.parse(strDate);
Calendar calendar = Calendar.getInstance();
calendar.setTime(parse);
System.out.println(calendar.get(Calendar.YEAR)+"/"+(calendar.get(Calendar.MONTH)+1)+"/"+calendar.get(Calendar.DAY_OF_MONTH));
}

注意:Calendar 类中的月份是从 0 开始的。

  1. getTime():是 Calendar 类的一个方法,用于返回一个Date对象,该对象表示此Calendar当前持有的时间值。
1
2
3
4
5
6
7
8
@Test
public void testCalendarGetTime() throws ParseException {
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:s");
String formatted = format.format(date);
System.out.println(formatted);
}