JDK8.0之前日期时间API
* currentTimeMillis():返回当前时间与1970年1月1日0时0分0秒之间一毫秒为单位的时间差(时间戳)
* java.util.Date类
* java.sql.Date类
* SimpleDateFormat:对日期Date类的格式化和解析
* Calendar日历类(抽象类)的使用
public class DateTest {
@Test
public void test1()
{
long l = System.currentTimeMillis();
System.out.println(l);
}
/**
* java.util.Date类
* java.sql.Date类
*
* 1.两个构造器使用
* Date():创建一个对应当前时间的Date对象
* Date(long date):创建指定毫秒数的Date对象
* 2.两个方法的使用
* toString():显示当前年、月、日、时、分、秒
* getTime():获取当前Date对象对应的毫秒数(时间戳)
*
* 3.java.sql.Date对应着数据库中的日期类型的变量
* >如何实例化
* >sal.Date ----> util.Date对象
*/
@Test
public void test2()
{
//
Date date = new Date();
System.out.println(date);
System.out.println(date.getTime());
Date date1=new Date(1596944520022L);
System.out.println(date1);
//创建java.sql.Date对象
java.sql.Date date2=new java.sql.Date(1596944520022L);
//2020-08-09
System.out.println(date2);
//sal.Date ----> util.Date对象
java.sql.Date date3=new java.sql.Date(1596234520022L);
long time = date3.getTime();
Date date4=new Date(time);
System.out.println();
System.out.println(date3);
System.out.println(date4);
}
/**
* SimpleDateFormat(String pattern)
* 1、两个操作
* ①格式化:日期---->字符串
* ②解析:字符串 --->日期
*/
@Test
public void test3()
{
//格式化:使用无参构造器,尽量不用
Date date=new Date();
// SimpleDateFormat date1=new SimpleDateFormat();
// System.out.println(date);
// String str=date1.format(date);
// System.out.println(str);
//
//
// //解析
// String str2="2020/8/9 下午2:43";
// try {
// Date date2 = date1.parse(str2);
// System.out.println(date2);
// } catch (ParseException e) {
// e.printStackTrace();
// }
//开发中常用:按照指定的方式格式化和解析:调用带参构造器
//格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String format1=sdf.format(date);
System.out.println(format1);
//解析
String str2="2020-02-16 18:00:00";
try {
System.out.println(sdf.parse(str2));
} catch (ParseException e) {
e.printStackTrace();
}
}
/**
* Calendar日历类(抽象类)的使用
*
*
*
*/
@Test
public void test4()
{
//实例化
/**
* 方式一:创建其子类GregorianCalendar的对象
* 方式二:调用其静态方法Calendar.getInstance()
*
*/
//GregorianCalendar gc=new GregorianCalendar();
Calendar calendar=Calendar.getInstance();
//System.out.println(calendar.getClass());
/**
* 常用方法
* get()
* set()
* add()
* getTime()
* setTime()
*/
//get()
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
//Calendar是可变性的
//set()
calendar.set(Calendar.DAY_OF_WEEK,2);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
//add()
calendar.add(Calendar.DAY_OF_WEEK,3);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
//getTime()
Date date = calendar.getTime();
System.out.println(date);
//setTime()
Date date1 = new Date();
calendar.setTime(date1);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
}
}
JDK8之后新的Date---API
LocalDate
LocalTime
LocalDateTime
Instant:瞬时
* 精度:纳米级
* 实例化:now();
* 类似于java.util.Date类
DateTimeFormatter:格式化或解析日期、时间
* 类似于SimpleDateFormat
public class DateTest2 {
@Test
public void test1()
{
//2020-08-09
//错误写法
//Date date=new Date(2020,8,9);
//正确写法(偏移量写法)
//Date年份从1900年开始,月份从0月开始
Date date=new Date(2020-1900,8-1,9);
System.out.println(date);
}
/**
* LocalDate
* LocalTime
* LocalDateTime
*/
@Test
public void test2()
{
//now();获取当前日期、时间、日期+时间
LocalDate localDate=LocalDate.now();
LocalTime localTime=LocalTime.now();
LocalDateTime localDateTime=LocalDateTime.now();
System.out.println(localDate);
System.out.println(localTime);
System.out.println(localDateTime);
//of();设置指定的年月日时分秒(没有偏移量)
LocalDateTime localDateTime1 = LocalDateTime.of(2020, 8, 9, 20, 26, 4);
System.out.println(localDateTime1);
//get相关
System.out.println(localDateTime1.getDayOfMonth());
System.out.println(localDateTime1.getDayOfWeek());
System.out.println(localDateTime1.getMonth());
//withXXX();设置相关的属性
//体现了不可变性
LocalDateTime localDateTime2 = localDateTime1.withDayOfMonth(22);
System.out.println(localDateTime1);
System.out.println(localDateTime2);
LocalDateTime localDateTime3 = localDateTime1.withHour(22);
System.out.println(localDateTime3);
//plusXXX();加
LocalDateTime localDateTime4 = localDateTime1.plusHours(3);
System.out.println(localDateTime4);
//minusXXX();减
LocalDateTime localDateTime5 = localDateTime1.minusHours(2);
System.out.println(localDateTime5);
}
/**
* Instant:瞬时
* 精度:纳米级
* 实例化:now();
* 类似于java.util.Date类
*/
//时间戳
@Test
public void test3()
{
//按零时区计算
Instant instant=Instant.now();
System.out.println(instant);
//添加时间的偏移量
//东八区
OffsetDateTime instant1=instant.atOffset(ZoneOffset.ofHours(8));
System.out.println(instant1);
//获取对应毫秒数
// Long l2=System.currentTimeMillis();
// System.out.println(l2);
//toEpochMilli():获取自1970年1月1日0时0分0秒开始的毫秒数 ---->Date.getTime();
long l = instant.toEpochMilli();
System.out.println(l);
//ofEpochMilli(Long millis);通过给定的毫秒数,获取Instant实例 -->Date(Long millis)
Instant instant2 = Instant.ofEpochMilli(1596978103787L);
System.out.println(instant2);
}
/**
* DateTimeFormatter:格式化或解析日期、时间
* 类似于SimpleDateFormat
*/
@Test
public void test4()
{
//方式一:预定义的标准格式。如ISO_LOCAL_DATE_TIME、ISO_LOCAL_DATE、ISO_LOCAL_TIME
DateTimeFormatter isoLocalDateTime = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
//格式化:日期-->字符串
LocalDateTime localDateTime=LocalDateTime.now();
String str1=isoLocalDateTime.format(localDateTime);
System.out.println(localDateTime);
System.out.println(str1);
//解析:字符串-->日期
TemporalAccessor parse=isoLocalDateTime.parse("2020-08-09T21:53:17.207289100");
System.out.println(parse);
//方式二:本地化相关的格式
//ofLocalizedDateTime(FormatStyle.SHORT)
//ofLocalizedDateTime(FormatStyle.LONG)
//ofLocalizedDateTime(FormatStyle.MEDIUM)
LocalDateTime localDateTime1=LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
//DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG).withZone(ZoneId.systemDefault());
//格式化
String str2=formatter.format(localDateTime1);
System.out.println(str2);
//重点:方式三、自定义的格式。 如:ofPattern("yyyy-MM-dd hh:mm:ss E")
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
//格式化
String s3=formatter1.format(LocalDateTime.now());
System.out.println(s3);
//解析
String s4="2020-08-09 10:17:25";
TemporalAccessor parse1 = formatter1.parse(s4);
System.out.println(parse1);
}
}
public class DateTest2 {
@Test
public void test1()
{
//2020-08-09
//错误写法
//Date date=new Date(2020,8,9);
//正确写法(偏移量写法)
//Date年份从1900年开始,月份从0月开始
Date date=new Date(2020-1900,8-1,9);
System.out.println(date);
}
/**
* LocalDate
* LocalTime
* LocalDateTime
*/
@Test
public void test2()
{
//now();获取当前日期、时间、日期+时间
LocalDate localDate=LocalDate.now();
LocalTime localTime=LocalTime.now();
LocalDateTime localDateTime=LocalDateTime.now();
System.out.println(localDate);
System.out.println(localTime);
System.out.println(localDateTime);
//of();设置指定的年月日时分秒(没有偏移量)
LocalDateTime localDateTime1 = LocalDateTime.of(2020, 8, 9, 20, 26, 4);
System.out.println(localDateTime1);
//get相关
System.out.println(localDateTime1.getDayOfMonth());
System.out.println(localDateTime1.getDayOfWeek());
System.out.println(localDateTime1.getMonth());
//withXXX();设置相关的属性
//体现了不可变性
LocalDateTime localDateTime2 = localDateTime1.withDayOfMonth(22);
System.out.println(localDateTime1);
System.out.println(localDateTime2);
LocalDateTime localDateTime3 = localDateTime1.withHour(22);
System.out.println(localDateTime3);
//plusXXX();加
LocalDateTime localDateTime4 = localDateTime1.plusHours(3);
System.out.println(localDateTime4);
//minusXXX();减
LocalDateTime localDateTime5 = localDateTime1.minusHours(2);
System.out.println(localDateTime5);
}
/**
* Instant:瞬时
* 精度:纳米级
* 实例化:now();
* 类似于java.util.Date类
*/
//时间戳
@Test
public void test3()
{
//按零时区计算
Instant instant=Instant.now();
System.out.println(instant);
//添加时间的偏移量
//东八区
OffsetDateTime instant1=instant.atOffset(ZoneOffset.ofHours(8));
System.out.println(instant1);
//获取对应毫秒数
// Long l2=System.currentTimeMillis();
// System.out.println(l2);
//toEpochMilli():获取自1970年1月1日0时0分0秒开始的毫秒数 ---->Date.getTime();
long l = instant.toEpochMilli();
System.out.println(l);
//ofEpochMilli(Long millis);通过给定的毫秒数,获取Instant实例 -->Date(Long millis)
Instant instant2 = Instant.ofEpochMilli(1596978103787L);
System.out.println(instant2);
}
/**
* DateTimeFormatter:格式化或解析日期、时间
* 类似于SimpleDateFormat
*/
@Test
public void test4()
{
//方式一:预定义的标准格式。如ISO_LOCAL_DATE_TIME、ISO_LOCAL_DATE、ISO_LOCAL_TIME
DateTimeFormatter isoLocalDateTime = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
//格式化:日期-->字符串
LocalDateTime localDateTime=LocalDateTime.now();
String str1=isoLocalDateTime.format(localDateTime);
System.out.println(localDateTime);
System.out.println(str1);
//解析:字符串-->日期
TemporalAccessor parse=isoLocalDateTime.parse("2020-08-09T21:53:17.207289100");
System.out.println(parse);
//方式二:本地化相关的格式
//ofLocalizedDateTime(FormatStyle.SHORT)
//ofLocalizedDateTime(FormatStyle.LONG)
//ofLocalizedDateTime(FormatStyle.MEDIUM)
LocalDateTime localDateTime1=LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
//DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG).withZone(ZoneId.systemDefault());
//格式化
String str2=formatter.format(localDateTime1);
System.out.println(str2);
//重点:方式三、自定义的格式。 如:ofPattern("yyyy-MM-dd hh:mm:ss E")
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
//格式化
String s3=formatter1.format(LocalDateTime.now());
System.out.println(s3);
//解析
String s4="2020-08-09 10:17:25";
TemporalAccessor parse1 = formatter1.parse(s4);
System.out.println(parse1);
}
}