Date,Datetime,DatetimeFormat
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 格式化
/*****************************LocalDate LocalTime LocalDatetime***************************/
LocalDateTime now = LocalDateTime.now(); // 获取当前时间 2021-11-18T14:46:04.934266600
// now = LocalDateTime.of(2021,11,18,12,0,0); // 获取指定时间
System.out.println(now.getYear()); // 获取当前年份 2021
System.out.println(now.getMonth()); // 获取当前月份 NOVEMBER
System.out.println(now.getMonthValue()); // 获取一年之中的第几月 11
System.out.println(now.get(ChronoField.MONTH_OF_YEAR)); // 获取当前月份 11
System.out.println(now.getDayOfYear()); // 获取当前一年之中的第几日 322
System.out.println(now.getDayOfMonth()); // 获取当前出于月份的第几日 18
System.out.println(now.getDayOfWeek()); // 获取当前星期数 THURSDAY
System.out.println(now.get(ChronoField.DAY_OF_WEEK)); // 获取当前一个星期的第几天 int 4
System.out.println(now.getHour()); // 获取小时 14
System.out.println(now.getMinute()); // 获取分 43
System.out.println(now.getSecond()); // 获取秒 46
System.out.println(now.getNano()); // 获取毫秒 270987200
System.out.println(now.getChronology()); // 获取使用的日历类型 ISO 常用的只有ISO,其他的有
System.out.println(now.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH)); // 对齐这一天在这个星期在月初的位置
System.out.println(now.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)); // 对齐这一天在这个星期在年初的位置
System.out.println(now.getLong(ChronoField.ALIGNED_WEEK_OF_YEAR)); // 计算当前时间位于这一年的第几个星期
System.out.println(now.getLong(ChronoField.ALIGNED_WEEK_OF_MONTH)); // 计算当前时间位于这一个月的第几个星期
System.out.println(now.plusDays(1)); // 日期增加一天
System.out.println(now.minusDays(1)); // 日期减少一天
System.out.println(now.minusWeeks(1)); // 上个星期
System.out.println(now.plusWeeks(1)); // 下个星期
// ....
/*****************************LocalDate 独有***************************/
LocalDate date = LocalDate.now();
System.out.println(date.getEra()); // 获取时代
System.out.println(date.isLeapYear()); // 是否闰年
LocalDateTime now1 = LocalDateTime.of(2021,12,1,12,0,0);
// 获取季度
int monthValue = now1.getMonthValue();
System.out.println(monthValue % 3 == 0 ? monthValue / 3 : monthValue / 3 + 1);
// 转换格式
String time = "2021-11-18 16:19:13";
System.out.println(LocalDateTime.parse(time,format));
Duration
//时间量可正可负。
//获取1天的时间量(86400秒0纳秒)
Duration d1=Duration.ofDays(1);
System.out.println(d1);
//获取-1小时的时间量(-3600秒0纳秒)
Duration d2=Duration.ofHours(-1);
System.out.println(d2);
//获取10分钟的时间量
Duration d3=Duration.ofMinutes(10);
System.out.println(d3);
//获取30秒钟的时间量
Duration d4=Duration.ofSeconds(30);
System.out.println(d4);
//获取20毫秒的时间量
Duration d5=Duration.ofMillis(20);
System.out.println(d5);
//获取1微秒的时间量
Duration d6=Duration.ofNanos(1000);
System.out.println(d6);
//获取100纳秒的时间量
Duration d7=Duration.ofNanos(100);
System.out.println(d7);
//第一个参数是秒数,第二个参数是纳秒数,而纳秒数可以是任意long类型的值,内部实现会根据传入的秒数和纳秒数的值进行调整,
//使创建的Duration实例的nanos属性值保持在0~999999999范围内。
//以下三个时间量等价
Duration a1=Duration.ofSeconds(3, 1);
System.out.println(a1);
Duration a2=Duration.ofSeconds(4, -999_999_999);
System.out.println(a2);
Duration a3=Duration.ofSeconds(2, 1000_000_001);
System.out.println(a3);
//传一个时间单位,表示获取这个时间单位的n倍的时间量,以下表示获取10天的时间量。
Duration d8=Duration.of(10, ChronoUnit.DAYS);
System.out.println(d8);
//从另一个时间量对象获取时间量,时间量对象可以是Duration类型也可以是Period类型
Duration d9=Duration.from(d8);
//看一下时间量对象的toString()方法能打印出什么
System.out.println(d9.toString());//PT240H
//parse(CharSequence)静态方法是通过解析字符串来创建一个时间量对象,
//String/StringBuilder/StringBuffer都实现了CharSequence接口
//那么字符串需要什么格式才会被解析成功呢?
//"PnDTnHnMn.nS"或"-PnDTnHnMn.nS"格式,字符串前面如果是负号,则整个周期都取反。
//"P" "D" "H" "M" "S"可以是大写或小写,这几个字符必须按顺序出现。
//"nD" "nH" "nM" "n.nS"这四个部分在字符串中必须有至少一个。
//"nD"表示n天,比如"3D","-2D"。一天的时间量被解析成刚好24小时。
//"T"是日期和时间的分隔符,必须出现在时间三个部分的第一次出现之前(如果有时间的话)。如果存在"T",则必须在"T"之后至少包含一个时间部分。
//"nH"表示n小时,比如"13H","-6H"。
//"nM"表示n分钟
//"n.nS"表示n.n秒,比如"45.345S",也可以是"45S",小数部分是可选的。小数点可以是点或逗号,小数部分的位数可以为0到9位。
Duration d10=Duration.parse("PT20.345S");//被解析为20.345秒
System.out.println(d10);
Duration d11=Duration.parse("PT15M");//被解析为15分钟(其中一分钟为60秒)
System.out.println(d11);
Duration d12=Duration.parse("PT10H");//被解析为10小时(其中一小时为3600秒)
System.out.println(d12);
Duration d13=Duration.parse("P2D");//被解析为2天(一天为24小时或86400秒)
System.out.println(d13);
Duration d14=Duration.parse("P2DT3H4M");//被解析为2天3小时4分钟
System.out.println(d14);
Duration d15=Duration.parse("PT-6H3M");//被解析为负5小时57分钟(-6小时+3分钟)(-21420秒)
System.out.println(d15);
Duration d16=Duration.parse("-PT6H3M");//被解析为负6小时3分钟(-6小时-3分钟)(-21780秒)
System.out.println(d16);
Duration d17=Duration.parse("-PT-6H+3M");//被解析为5小时57分钟(+6小时-3分钟)(21420秒)
System.out.println(d17);
System.out.println(d17.get(ChronoUnit.SECONDS));
System.out.println(d17.toSeconds());
Calender
SimpleFormat
LocalTime
LocalDate
LocalDatetime
DatetimeFormat