jdk 8.0 之前日期时间的api测试
package com.atguigu.java;
import org.junit.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* jdk 8.0 之前日期时间的api测试
* 1. System类中的 curtentTimeMillis()
* 2. java.util.Date 和 子类 java.sql.Date
* 3. SimpleDateFormat
* 4. Calendar
*
* @author liangqichen
* @create 2021-09-05 10:06
*/
public class DateTimeTest {
/*
SimpleDateFormat 的使用 : SimpleDateFormat对日期Date类的格式化和解析
1. 两个操作:
1.1格式化 日期 ---> 字符串 date ---> String
1.2解析 格式化的逆过程 字符串 ---> 日期
2.SimpleDateFormat 的实例化
*/
@Test
public void testSimpleDateFormat() throws ParseException {
// 实例化SimpleDateFormat : 使用默认的构造器
SimpleDateFormat sdf = new SimpleDateFormat();
// 格式化日期: 日期 ---> 字符串
Date date = new Date();
System.out.println(date); // Sun Sep 05 10:14:59 CST 2021
String format = sdf.format(date);
System.out.println(format); //2021/9/5 下午12:08
// 解析 : 字符串 ---> 日期
String str = "2021/9/5 下午12:08";
Date date1 = sdf.parse(str);
System.out.println(date1); // Sun Sep 05 12:08:00 CST 2021
// ************************ 按照指定的方式进行格式化和解析 : 调用带参数的构造器 *******************************
// SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy.MMMM.dd GGG hh:mm aaa");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); // 开发中较多使用指定格式 较灵活
// 格式化
String format1 = sdf1.format(date);
System.out.println(format1); // 2021.九月.05 公元 12:17 下午 2021-09-05 12:19:25
// 解析 要求字符串必须符合 SimpleDateFormat 识别的格式 通过构造器的形参来体现
// 否则就会抛出异常
Date date2 = sdf1.parse("2020-09-05 12:19:25");
System.out.println(date2); // Sat Sep 05 00:19:25 CST 2020
}
/*
练习1 : 字符串 "2020-09-08" 转换为java.sql.Date
练习2 : 三天打鱼,两天晒网 1990-1-1执行 ****-**-**在打鱼还是晒网
*/
@Test
public void testExer() throws ParseException {
String birth = "2020-09-08";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = simpleDateFormat.parse(birth);
System.out.println("***" + date); //***Tue Sep 08 00:00:00 CST 2020
java.sql.Date birthDate = new java.sql.Date(date.getTime());
System.out.println(birthDate); // 2020-09-08
}
/*
Calendar 日历类的使用 抽象类
*/
@Test
public void testCalendar() {
// 1. 实例化
// 方式一 : 创建子类的对象 GregorianCalendar
// 方式二 : 调用 getInstance方法
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getClass()); // class java.util.GregorianCalendar
// 2. 常用方法
// get()
int days = calendar.get(Calendar.DAY_OF_MONTH); // 获取当前月份的第几天
System.out.println(days); // 5
System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); // 248 获取当年的第几天
// set() 可变的
calendar.set(Calendar.DAY_OF_MONTH, 22);
days = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days); // 22
// add()
calendar.add(Calendar.DAY_OF_MONTH, -3);
days = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days); // 19
// getTime() 日历类 --- > Date
Date date = calendar.getTime();
System.out.println(date); // Sun Sep 19 15:32:54 CST 2021
// setTime() Date ---> 日历类
Date date1 = new Date();
calendar.setTime(date1);
days = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days); // 5
}
}