Java用线程安全的java.time代替了原来线程不安全的Date和Calendar。
通过查阅资料,学习了新增的time的一些基本使用方法。
打开任意分割线内的代码块注释,都可以直接运行。
package com.my.timetest;
import java.time.DayOfWeek;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Month;
import java.time.MonthDay;
import java.time.Period;
import java.time.Year;
import java.time.YearMonth;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.time.temporal.ChronoField;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;
import java.util.Iterator;
import java.util.Set;
/**
*
* @author Zhang
*
* 包括java.time中日期时间的创建、增减、修改、查询、格式化、解析
*
*/
public class TimeTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
// //使用 now 方法创建 Instant的实例对象
// Instant mInstantNow = Instant.now();
// //使用 now 方法创建 LocalDate的实例对象
// LocalDate mLocalDateNow = LocalDate.now();
// //使用 now 方法创建 LocalTime的实例对象
// LocalTime mLocalTimeNow = LocalTime.now();
// //使用 now 方法创建 LocalDateTime的实例对象
// LocalDateTime mLocalDateTimeNow = LocalDateTime.now();
// //使用 now 方法创建 ZonedDateTime的实例对象
// ZonedDateTime mZonedDateTimeNow = ZonedDateTime.now();
//
// //祖鲁时间(格林威治时间/国际标准时间) Instant:2022-08-14T10:37:28.878641900Z
// System.out.println("Instant: " + mInstantNow);
// //年-月-日 yyyy-mm-dd LocalDate:2022-08-14
// System.out.println("LocalDate: " + mLocalDateNow);
// //时:分:秒 HH:mm:ss LocalTime:18:37:28.905570800
// System.out.println("LocalTime: " + mLocalTimeNow);
// //年-月-日T时:分:秒 LocalDateTime:2022-08-14T18:37:28.905570800
// System.out.println("LocalDateTime: " + mLocalDateTimeNow);
// //年-月-日T时:分:秒+时区 ZonedDateTime:2022-08-14T18:37:28.906567200+08:00[Asia/Shanghai]
// System.out.println("ZonedDateTime: " + mZonedDateTimeNow);
//===============================================================================================
// //使用 now 方法创建 Year类的实例对象
// Year mYear = Year.now();
// //使用 now 方法创建 YearMonth类的实例对象
// YearMonth mYearMonth = YearMonth.now();
// //使用 now 方法创建 MonthDay类的实例对象
// MonthDay mMonthDay = MonthDay.now();
//
// //Year:2022
// System.out.println("Year: " + mYear);
// //YearMonth:2022-08
// System.out.println("YearMonth: " + mYearMonth);
// //MonthDay:--08-14
// System.out.println("MonthDay: " + mMonthDay);
//===============================================================================================
// //初始化2022年8月8日的LocalDate对象
// LocalDate mLocalDate = LocalDate.of(2022, Month.AUGUST, 8);
// //LocalDate: 2022-08-08
// System.out.println("LocalDate: " + mLocalDate);
//
// /*
// * 初始化晚上8点0分0秒的 LocalDate对象 -> 如果是晚上需要加上12
// * LocalTime.of方法的重载形式有以下几种,可以根据实践情况自行使用:
// * LocalTime.of(int hour,int minute) -> 根据小时/分钟生成对象
// * LocalTime.of(int hour,int minute,int second) -> 根据小时/分钟/秒生成对象
// * LocalTime.of(int hour,int minute,int second,int nanoOfSecond) -> 根据小时/分钟/秒/毫秒/纳秒生成对象
// */
// LocalTime mLocalTime = LocalTime.of(20, 0);
// //LocalTime: 20:00 若尾秒为0则省略
// System.out.println("LocalTime: " + mLocalTime);
//
// /*
// * 初始化2022年8月8日下午8点0分的LocalDateTime对象。
// * LocalDateTime.of方法的重载形式有以下几种:
// * LocalDateTime.of(int year,int month,int dayOfMonth,int hour,int minute) -> 根据年/月/日/时/分生成对象
// * LocalDateTime.of(int year,int month,int dayOfMonth,int hour,int minute,int second,int nanoOfSencond)
// * -> 根据年/月/日/时/分/秒/毫秒/纳秒生成对象
// */
// LocalDateTime mLocalDateTime = LocalDateTime.of(2022, Month.AUGUST, 8, 8, 0);
// //LocalDateTime: 2022-08-08T08:00
// System.out.println("LocalDateTime: " + mLocalDateTime);
//
// /*
// * LocalDateTime的of方法的特殊使用:
// * LocalDateTime.of(LocalDate localDate,LocalTime localTime);
// */
// LocalDateTime mLocalDateTimeOf = LocalDateTime.of(mLocalDate, mLocalTime);
// //LocalDateTime: 2022-08-08T20:00
// System.out.println("LocalDateTime2: " + mLocalDateTimeOf);
//===============================================================================================
// //获取所有时区信息
// Set<String> availableZoneIds = ZoneId.getAvailableZoneIds();
// //输出所有时区,Europe/Monaco、America/Los_Angeles等等
// for (String availableZoneId : availableZoneIds) {
// System.out.println(availableZoneId);
// }
// //获取当前系统默认的时区
// ZoneId zoneId = ZoneId.systemDefault();
// //系统默认时区:Asia/Shanghai
// System.out.println("系统默认时区:" + zoneId);
//===============================================================================================
// /*
// * 封装LocalDateTime并添加时区
// */
// //1、封装LocalDateTime对象,参数自定义:2022年11月11日 8点54分38秒
// LocalDateTime mLocalDateTime = LocalDateTime.of(2022, Month.NOVEMBER, 11, 8, 54, 38);
// //2、LocalDateTime对象现在只是封装了时间,并没有时区信息,添加时区信息用atZone()方法
// ZonedDat