Date类
(1)toString() 显示当前的年月日分秒
(2)getTime() 显示当前对象对应的时间戳(毫秒)
/**
* Created by KingsLanding on 2022/6/20 13:55
*/
public class Data {
@Test
public void test2(){
//返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差
//称之为时间戳
System.out.println(System.currentTimeMillis());
}
/**
* 1.两个构造器的使用
* Date()构造器:创建一个当前时间的date对象
* 指定毫秒数的Date对象
* 2.两个方法的使用
* (1)toString() 显示当前的年月日分秒
* (2)getTime() 显示当前对象对应的时间戳(毫秒)
*
* 3.java.sql.Date对应数据库中的日期类型的变量
* 如何将java.util.Date对象转换为java.sql.Date对象
*/
@Test
public void test1(){
//一、Date()构造器:创建一个当前时间的date对象
Date date = new Date();
System.out.println(date.toString());
System.out.println(date.getTime());
//二、指定毫秒数的Date对象
Date date1 = new Date(1655704905737L);
System.out.println(date1.toString());
//java.sql.Date()的实例化方式
java.sql.Date date2 = new java.sql.Date(1655704905737L);
System.out.println(date2.toString());
//java.util.Date()-->java.sql.Date()
java.sql.Date date3 = new java.sql.Date(date.getTime());
System.out.println(date3);
}
}
jdk8之前的日期时间的API测试
- 1.System中的currentTimeMillis()方法
- 2.java.util.Date和java.sql.Date
- 3.SimpleDateFormat
- 4.Calendar 日历类
public class SimpleDateFormatTest {
@Test
public void test() throws Exception{
//实例化SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat();
//格式化:日期--->字符串
Date date=new Date();
System.out.println(date);
String format = sdf.format(date);
System.out.println(format);
//解析:格式化的逆过程 字符串-->日期
String s1="22-6-20 下午4:28";
Date date2 = sdf.parse(s1);
System.out.println(date2);
//按照指定的方式格式化和解析,调用带参的构造器
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(sdf1.format(date));
}
/**
* 练习:字符串"2022-6-20"转换为java.sql.Date
*/
@Test
public void test3() throws Exception{
String s1="2022-6-20";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(s1);
System.out.println(date);
java.sql.Date date1 = new java.sql.Date(date.getTime());
System.out.println(date1);
}
/**
* Calendar日历类(抽象类)的使用
*/
@Test
public void test4(){
//创建方式
//一、创建其子类(GregorianCalender)的对象
//二、调用其静态方法getInstance();
Calendar calendar=Calendar.getInstance();
//常用方法
//get()
int days = calendar.get(Calendar.DAY_OF_MONTH);//当月第几天
System.out.println(days);
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//当月第几周
//set()
calendar.set(Calendar.DAY_OF_MONTH,10);//设置当月第10天
days=calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days);
//add()
calendar.add(Calendar.DAY_OF_MONTH,2);//当月第几天+2
days=calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days);
//getTime() 日历类-->Date
Date date = calendar.getTime();
System.out.println(date);//Sun Jun 12 18:28:50 CST 2022
//setTime() Date-->日历类
calendar.setTime(date);
days=calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days);
}
}
### jdk8之后的日期API
- LocalDate;
- LocalTime;
- LocalDateTime使用频率更高
public class DateTime {
/**
* LocalDate;LocalTime;LocalDateTime使用频率更高
* 类似于Calendar
*/
@Test
public void test1(){
//获取当前时间
LocalDate now = LocalDate.now();
System.out.println(now);//2022-06-21
System.out.println(LocalTime.now());//14:41:43.525
System.out.println(LocalDateTime.now());//2022-06-21T14:41:43.525
//of()设置具体时间
System.out.println(LocalDateTime.of(2022, 6, 21, 4, 12));//年,月,日,时,分,秒
//getXxx():获取相关属性
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime.getDayOfMonth());//获取当月历经天数
System.out.println(localDateTime.getDayOfYear());//获取当年历经天数
//withXxx():设置相关属性
//不可变性
LocalDateTime localDateTime1 = LocalDateTime.now();
System.out.println(localDateTime1.withDayOfMonth(23));//设置当月号数
System.out.println(localDateTime1);
}
/**
* Instant类
*/
@Test
public void test2(){
//now()获取本初子午线上对应的标准时间
Instant instant = Instant.now();
System.out.println(instant);
//atOffset()添加时间偏移量(北京时间)
Instant instant1 = Instant.now();
OffsetDateTime offsetDateTime = instant1.atOffset(ZoneOffset.ofHours(8));
System.out.println(offsetDateTime);
//toEpochMilli()获取自1970-1-1-0-0-0(UTC)开始的毫秒
long milli = instant1.toEpochMilli();
System.out.println(milli);
//ofEpochMilli()通过给定的毫秒数,获取Instant实例;即毫秒数对应的本初子午线时间
Instant ofEpochMilli = Instant.ofEpochMilli(1655795103358L);
System.out.println(ofEpochMilli);
}
/**
* DateTimeFormatter:格式化或解析日期,时间
* 类似于SimpleDateFormat
*/
@Test
public void test3(){
//方式一;使用预定义的
DateTimeFormatter isoDateTime = DateTimeFormatter.ISO_DATE_TIME;
//格式化:日期-->字符串
LocalDateTime localDateTime = LocalDateTime.now();
String format = isoDateTime.format(localDateTime);
System.out.println(format);
//解析:字符串-->日期
TemporalAccessor parse = isoDateTime.parse("2022-06-21T15:17:21.447");
System.out.println(parse);
//重点:方式二、自定义格式
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
//格式化
LocalDateTime now = LocalDateTime.now();
String format1 = dateTimeFormatter.format(now);
System.out.println(format1);
//解析
TemporalAccessor parse1 = dateTimeFormatter.parse("2022-06-21 03:34:02");
System.out.println(parse1);
}
}
重点 自定义格式DateTimeFormatter
//重点:方式二、自定义格式
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
//格式化
LocalDateTime now = LocalDateTime.now();
String format1 = dateTimeFormatter.format(now);
System.out.println(format1);
//解析
TemporalAccessor parse1 = dateTimeFormatter.parse("2022-06-21 03:34:02");
System.out.println(parse1);