JDK8之前的日期时间API
获取系统当前时间:System类中的currentTimeMillis()
long time = System.currentTimeMillis(); //返回当前时间与1970年1月1日0时0秒之间以毫秒为单位的时间差 //称为时间戳 System.out.println(time);
java.util.Date类与子类java.sql.Date类
/**
* SimpleDateFormat的使用:对日期Date类的格式化和解析
* 1.两个操作
* 1.1格式化:日期 ---》字符串
* 1.2解析:格式化的逆过程
* 2.SimpleDateFormat的实例化
*/
@Test
public void testSimpleDateFormat() throws ParseException {
//SimpleDateFormat的实例化:使用默认的构造器
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
//格式化:日期 ---》字符串
Date date = new Date();
// System.out.println(date);
String format = simpleDateFormat.format(date);//格式化,中文格式
System.out.println(format);//20-10-23 下午8:26
//解析:
String str = "20-10-23 下午7:54";
Date date1 = simpleDateFormat.parse(str);
System.out.println(date1);//20-10-23 下午8:26
//按照指定的方式格式化和解析,调用带参的构造器
// SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyyy.MMMMM.dd GGG hh:mm aaa");
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//格式化
String format1 = simpleDateFormat1.format(date);//20-10-23 08:26 下午
System.out.println(format1);//2020-10-23 08:39:54
//解析:要求字符串必须是符合SimpleDateFormat识别的格式(通过构造器参数体现)
Date date2 = simpleDateFormat1.parse("2020-02-18 11:48:27");
System.out.println(date2);//Tue Feb 18 11:48:27 CST 2020
}
- Calendar
* Calendar日历类(抽象类)的使用
*
*/
@Test
public void testCalendar(){
//1.实例化
//方式一:创建其子类(GregorianCalendar)的对象
//方式二:调用其静态方法getInstance()
Calendar calendar = Calendar.getInstance();
// System.out.println(calendar.getClass());
//2.常用方法
//get()
int days = calendar.get(Calendar.DAY_OF_MONTH);//这个月的第几天
System.out.println(days);
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//这一年的第几天
//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);//25
//getTime():日历类--->Date
Date date = calendar.getTime();
System.out.println(date);
//setTime():Date---》日历类
Date date1 = new Date();
calendar.setTime(date1);
days = calendar.get(Calendar.DAY_OF_MONTH);//这个月的第几天
System.out.println(days);
}
JDK8中的日期时间API
新时间日期API新时间日期API
java.time-包含值对象的基础包 java.time.chrono-提供对不同的日历系统的访问 java.time.format-格式化和解析时间和日期 java.time.temporal-包括底层框架和扩展特性 java.time.zone-包含时区支持的类 说明:大多数开发者只会用到基础包和format包,也可能会用到temporal包。因此,尽管有68个新的公开类型,大多数开发者,大概将只会用到其中的三分之一。
- LocalDate、LocalTime、LocalDateTime LocalDate、LocalTime、LocalDateTime类是其中较重要的几个类,它们的实例是不可变的对象,分别表示使用1$0-8601日历系统的日期、时间、日期和时间。它们提供了简单的本地日期或时间,并不包含当前的时间信息,也不包含与时区相关的信息。
- LocalDate代表OS格式(yyyy-MM-dd)的日期,可以存储生日、纪念日等日期。
- LocalTime表示一个时间,而不是日期。
- LocalDateTime是用来表示日期和时间的,这是一个最常用的类之一。
/**
* LocalDate、LocalTime、LocalDateTime的使用
* 说明:1.LocalDateTime相较于LocalDate、LocalTime,使用频率要高
* 2.类似于Calendar,但Local...不可变
*/
@Test
public void test1(){
//now():获取当前的日期、时间、日期+时间
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDate);//2020-10-23
System.out.println(localTime);//23:06:44.226
System.out.println(localDateTime);//2020-10-23T23:06:44.226
//of():设置指定的年月日时分秒是没有偏移量的
LocalDateTime localDateTime1 = LocalDateTime.of(2020, 10, 6, 13, 23, 43);
System.out.println(localDateTime1);
//getXxx()
System.out.println(localDateTime.getDayOfMonth());
System.out.println(localDateTime.getDayOfWeek());
System.out.println(localDateTime.getMonth());
System.out.println(localDateTime.getMonthValue());
System.out.println(localDateTime.getMinute());
//体现localDate等的不可变性
LocalDate localDate1 = localDate.withDayOfMonth(22);
System.out.println(localDate);
System.out.println(localDate1);
LocalDateTime localDateTime2 = localDateTime.withHour(4);
System.out.println(localDateTime);
System.out.println(localDateTime2);
//加减
LocalDateTime localDateTime3 = localDateTime.plusMonths(3);
System.out.println(localDateTime3);
LocalDateTime localDateTime4 = localDateTime.minusDays(6);
System.out.println(localDateTime4);
}
(未完待续)