import java.time.Instant;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
public class CalendarNote {
public static void main(String[] args) {
/*1.Calendar是一个抽象类,并且构造器是私有的。
2.可以通过getInstence()来获取实例
3.提供大量的方法和字段提供给程序员
4.Calendar没有提供对应格式化的类,因此需要程序员自己组合来输出(灵活搭配)
5.如果我们需要按照24小时进制来获取时间 Calendar.HOUR===>Calendar.HOUR_OF_DAY
-----------------------------------------------------------------------------------------
>前面两代日期类的不足分析
JDK 1.0中包含了一个java.util.Date类,但是它的大多数方法已经在JDK 1.1引入Calendar类之后被弃用了。而Calendar也存在问题是:
1)可变性:像曰期和时间这样的类应该是不可变的。
2)偏移:Date中的年份是从1900开始的,而月份都从0开始。
3)格式化:格式化只对Date有用,Calendar则不行。
4)此外,它们也不是线程安全的;不能处理闰秒等(每隔2天,多出1s)。
>第三代曰期类常见方法
1)LocalDate(日期)、LocalTime(时间)、LocalDateTime(日期时间)JDK8加入的
LocalDate只包含日期,可以获取日期字段
LocalTime只包含时间,可以获取时间字段
LocalDateTime包含白期+时间,可以获取日期和时间字段
案例演示[后ppt]:
LocaIDateTime ldt = LocalDateTime.now(); //LocalDate.now();//LocalTime.now()System.out.println(ldt);
ldt.getYearO;ldt.getMonthValueO;ldt.getMonth();ldt.getDayOfMonth0;ldt.getHourO;ldt.getMinute(;ldt.getSecond(0;
System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+ "月"+c.get(Calendar.DAY_OF_MONTH)+"日");
* */
Calendar c = Calendar.getInstance();
//创建日历类对象//比较简单,自System.out.printIn(c);
// 1/2.获取日历对象的某个日历字段
System.out.println("年:" + c.get(Calendar.YEAR));
System.out.println("月:" + (c.get(Calendar.MONTH) + 1));
System.out.println("日:" + c.get(Calendar.DAY_OF_MONTH));
System.out.println("小时:" + c.get(Calendar.HOUR));
System.out.println("分钟:" + c.get(Calendar.MINUTE));
System.out.println("秒:" + c.get(Calendar.SECOND));
//Calender没有专门的格式化方法,所以需要程序员自己来组合显示
System.out.println(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1)
+ "月" + c.get(Calendar.DAY_OF_MONTH) + "日");
System.out.println("========================================");
//使用now()方法返回一个实例
LocalDateTime ldt = LocalDateTime.now(); //LocalDate.now();//LocalTime.now()System.out.println(ldt);
ldt.getYear();//年
ldt.getMonthValue();//月
ldt.getMonth();//月
ldt.getDayOfMonth();//日
ldt.getHour();//时
ldt.getMinute();//分
ldt.getSecond();//秒
System.out.println(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月" + c.get(Calendar.DAY_OF_MONTH) + "日");
//使用DateTimeFormatter 对象来进行格式化
DateTimeFormatter date=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String format=date.format(ldt);
System.out.println(format);
System.out.println("==================================");
//通过静态方法now()获取表示当前时间戳的对象
Instant now=Instant.now();
System.out.println(now);
//通过form()可以把Instant转化为Date
Date date1=Date.from(now);
//通过date的toInstant() 可以把date 转成Instant对象
Instant instant=date1.toInstant();
//提供plus和minus方法可以对当前时间进行加,或者减
//看看890天后是什么时候
LocalDateTime localDateTime=ldt.plusDays(890);
System.out.println( date.format(localDateTime));
//34567分钟之前
LocalDateTime localDateTime1=ldt.minusMinutes(3456);
System.out.println(date.format(localDateTime1));
}
}
LocalDateTime没有构造器,方法都是静态方法,通过now()方法返回LocalDateTime对象