1. java.lang.System类
System类提供的public static long currentTimeMillis()用来返回当前时
间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。
(此方法适于计算时间差。)
//1.System类中的currentTimeMillis()
@Test
public void test1(){
long time = System.currentTimeMillis();
//返回当前时间与1970年1月1日0分0秒之间以毫秒为单位的时间差。
//称为时间戳
System.out.println(time);
}
2. java.util.Date类
表示特定的瞬间,精确到毫秒
java.util.Date类 |—java.sql.Date类
1.两个构造器的使用
- 构造器一:Date():创建一个对应当前时间的Date()对象
- 构造器二:创建指定毫秒数的Date对象
2.两个方法的使用
- toString():显示当前年,月,日,时,分,秒
- getTime():获取当前Date对象对应的毫秒数(时间戳)
3.java.sql.Date对应着数据库中的日期类型的变量
- 如何实例化
- 如何将java.util.Date对象转换为java.sql.Date对象
@Test
public void test2(){
//构造器一:Date():创建一个对应当前时间的Date()对象
Date date1 = new Date();
System.out.println(date1.toString());//Fri Mar 18 09:14:10 CST 2022
System.out.println(date1.getTime());//1647566050693
//构造器二:创建指定毫秒数的Date对象
Date date2 = new Date(1647566050693L);
System.out.println(date2.toString());
//创建java。sql.Date对象
java.sql.Date date3 = new java.sql.Date(35235325345L);
//如何将java.util.Date对象转换为java.sql.Date对象
Date date4 = new Date();
java.sql.Date date5 = new java.sql.Date(date4.getTime());
}
3. java.text.SimpleDateFormat类
SimpleDateFormat的使用:SimpleDateFormat对日期Date类的格式化和解析
1.两个操作:
- 1.1 格式化:日期 —>字符串
- 1.2 解析:格式化的逆过程,字符串 —>日期
2.格式化:
- SimpleDateFormat() :默认的模式和语言环境创建对象
- public SimpleDateFormat(String pattern): 该构造方法可以用参数pattern指定的格式创建一个对象,该对象调用:
- public String format(Date date): 方法格式化时间对象date
3.解析: - public Date parse(String source): 从给定字符串的开始解析文本,以生成一个日期。
@Test
public void testSimpleDateFormat() throws ParseException {
//实例化SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat();
//格式化:日期 --->字符串
Date date = new Date();
System.out.println(date);//Fri Mar 18 10:29:56 CST 2022
String format = sdf.format(date);
System.out.println(format);//2022/3/18 上午10:29
//解析:格式化的逆过程,字符串 --->日期
String str = "2022/3/18 上午10:26";
Date date1 = sdf.parse(str);
System.out.println(date1);//Fri Mar 18 10:26:00 CST 2022
//按照指定的方式格式化和解析:调用带参的构造器
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//格式化
String format1 = sdf1.format(date);
System.out.println(format1);//2022-03-18 10:35:47
Date date2 = sdf1.parse("2022-03-18 10:35:47");
System.out.println(date2);//Fri Mar 18 10:35:47 CST 2022
}
练习一:字符串"2020-09-08"转换为java.sql.Date
@Test
public void testExer() throws ParseException {
String birth = "2020-09-08";
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf1.parse(birth);
java.sql.Date birthDate = new java.sql.Date(date.getTime());
System.out.println(birthDate);//2020-09-08
}
4.Calendar日历类(抽象类)的使用
Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。
获取Calendar实例的方法
- 使用Calendar.getInstance()方法
- 调用它的子类GregorianCalendar的构造器。
一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。比如YEAR、 MONTH、 DAY_OF_WEEK、HOUR_OF_DAY 、MINUTE、 SECOND
- public void set(int field,int value)
- public void add(int field,int amount)
- public final Date getTime()
- public final void setTime(Date date)
注意:
- 获取月份时: 一月是0,二月是1,以此类推, 12月是11
- 获取星期时: 周日是1,周二是2 , 。 。。。周六是7
@Test
public void testCalender(){
//1.实例化
//方式一:创建其子类(GregorianCalendar)的对象
//方式二:调用其静态方法(getInstance)
Calendar calendar = Calendar.getInstance();
//System.out.println(calendar.getClass());//GregorianCalendar
//2.常用方法
//get()
int days = calendar.get(Calendar.DAY_OF_MONTH);//这个月的第几天
System.out.println(days);//18
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//79-->这一年的第几天
//set()
calendar.set(Calendar.DAY_OF_MONTH,23);
days = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days);//79
//add()
calendar.set(Calendar.DAY_OF_MONTH,3);
days = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days);//26
//getTime():日历类 -- >Date
Date date = calendar.getTime();
System.out.println(date); //Thu Mar 03 11:19:25 CST 2022
//setTime():Date ---->日历类
Date date1 = new Date();
calendar.setTime(date1);
days = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days);//18
}