重点参考文章!
http://www.importnew.com/14857.html
java.time – 包含值对象的基础包java.time.chrono – 提供对不同的日历系统的访问java.time.format – 格式化和解析时间和日期java.time.temporal – 包括底层框架和扩展特性java.time.zone – 包含时区支持的类
of: 静态工厂方法,从组成部分中创建实例from: 静态工厂方法,尝试从相似对象中提取实例。from()方法没有of()方法类型安全now: 静态工厂方法,用当前时间创建实例parse: 静态工厂方法,总字符串解析得到对象实例get: 获取时间日期对象的部分状态is: 检查关于时间日期对象的描述是否正确with: 返回一个部分状态改变了的时间日期对象拷贝plus: 返回一个时间增加了的、时间日期对象拷贝minus: 返回一个时间减少了的、时间日期对象拷贝to: 把当前时间日期对象转换成另外一个,可能会损失部分状态at: 用当前时间日期对象组合另外一个,创建一个更大或更复杂的时间日期对象format: 提供格式化时间日期对象的能力
Instant
public static void main(String[] args) { Instant instant= Instant.now(); //现在时间 System.out.println(instant); //Constant for the 1970-01-01T00:00:00Z epoch instant. System.out.println(Instant.EPOCH); //This could be used by an application as a "far future" instant. System.out.println(Instant.MAX); //This is one year earlier than the minimum System.out.println(Instant.MIN); /** * 通过文档获知,正值和负值都是以纪元时间的先后尽心分割 */ System.out.println(Instant.ofEpochMilli(86400000)); System.out.println(Instant.ofEpochSecond(86400)); //对时间进行矫正,文档中有写 System.out.println(Instant.ofEpochSecond(86400,100)); //可以按照始终获取来源进行获取 System.out.println(Instant.now(Clock.systemDefaultZone())); //对不同的日期进行转换,只要是实现了接口的 System.out.println(Instant.from(ZonedDateTime.now())); //获取从纪元时间到现在的秒数 System.out.println(instant.getEpochSecond()); //获取纳秒数 System.out.println(instant.getNano()); //截取其中的一部分 System.out.println(instant.get(ChronoField.NANO_OF_SECOND)); //比较时间 System.out.println(instant.compareTo(Instant.EPOCH)); //根据分和秒进行纠正 System.out.println(instant.adjustInto(Instant.now())); //形成偏移日期 System.out.println("atOffset:"+instant.atOffset(ZoneOffset.ofHours(2))); //设置时区 System.out.println(instant.atZone(ZoneId.systemDefault())); //截取其中的一部分 System.out.println(instant.getLong(ChronoField.NANO_OF_SECOND)); System.out.println(instant.isAfter(instant)); System.out.println(instant.isBefore(instant)); System.out.println(instant.isSupported(ChronoField.NANO_OF_SECOND)); //时间日期相加减 System.out.println(instant.minus(Duration.ofDays(100000))); System.out.println(instant.plusMillis(1000000)); //显示日期时间段范围 System.out.println(instant.range(ChronoField.NANO_OF_SECOND)); //截断日期到一个值 System.out.println(instant.truncatedTo(ChronoUnit.DAYS)); //此时间与结束瞬间的时间量 System.out.println(instant.until(Instant.now(),ChronoUnit.SECONDS));LocalDate:
import java.time.*; import java.time.chrono.IsoEra; import java.time.chrono.MinguoDate; import java.time.temporal.ChronoField; import java.time.temporal.TemporalQueries; public class test2 { public static void main(String[] args) { LocalDate localDate = LocalDate.now(); System.out.println(localDate); System.out.println(localDate.getClass()); System.out.println(LocalDate.MAX); System.out.println(LocalDate.now()); System.out.println(LocalDate.MIN); //获得特定时区的localDate System.out.println(LocalDate.now(ZoneOffset.UTC)); //获取特定的时钟 System.out.println(LocalDate.now(ZoneId.systemDefault())); //使用不同的历法 System.out.println(LocalDate.from(MinguoDate.now())); //距离纪元时间的偏移量的值 System.out.println(LocalDate.ofEpochDay(10000)); System.out.println(LocalDate.of(2001, 01, 02)); System.out.println(LocalDate.ofYearDay(2011, 100)); //对CharSequence进行解析抓换 System.out.println(LocalDate.parse("2019-03-05")); //对现有的时间类的精度以及属性信息进行查询,可以获得很多信息 System.out.println(localDate.query(TemporalQueries.precision())); //获取纪元信息等 System.out.println(localDate.get(ChronoField.ERA)); //调整至相同类型获取时瞬,这里要求是同一类型 System.out.println(localDate.adjustInto(LocalDate.now())); //1970-1-1距现在的时间 System.out.println(localDate.getLong(ChronoField.EPOCH_DAY)); //得到一个period对象,用以返回相对应的对象 System.out.println(localDate.until(LocalDate.now()).getClass()); //返回一个部分状态改变的对象 System.out.println(localDate.with(IsoEra.BCE)); //创建一个localDateTime System.out.println(localDate.atStartOfDay()); } }LocalDateTime
public class test3 { public static void main(String[] args) { System.out.println(LocalDateTime.MAX); System.out.println(LocalDateTime.MIN); System.out.println(LocalDateTime.now()); LocalDateTime localDateTime=LocalDateTime.now(); //从相似方法中获取方法 System.out.println(LocalDateTime.from(LocalDateTime.MAX)); System.out.println(localDateTime); //本地时间加偏移量 OffsetDateTime转化为这样的日期类型 System.out.println(localDateTime.atOffset(ZoneOffset.ofHours(18)).getClass()); //截短了的日期 System.out.println(localDateTime.truncatedTo(ChronoUnit.DAYS)); //获取时间区间的有效值 System.out.println(localDateTime.range(ChronoField.EPOCH_DAY)); //获取现在使用的时间系统值 System.out.println(localDateTime.getChronology()); } }LocalTime
import java.time.*; import java.util.Date; public class test4 { public static void main(String[] args) { System.out.println(LocalTime.now()); LocalTime localTime=LocalTime.now(); //从相似的类型中提取 System.out.println(LocalTime.from(LocalDateTime.now())); //最大最小值 System.out.println(LocalTime.MIN); System.out.println(LocalTime.MAX); System.out.println(LocalTime.MIDNIGHT); //指定时区来源 System.out.println(LocalTime.now(Clock.systemDefaultZone())); //instant到localDateTime的指定转换方式 System.out.println(LocalTime.now(ZoneId.systemDefault())); System.out.println(LocalTime.of(10,20)); //获取十二点 System.out.println(LocalTime.NOON); //转变时间为offset System.out.println(localTime.atOffset(ZoneOffset.ofHours(1))); //给其添加时间 System.out.println(localTime.atDate(LocalDate.now())); //现在所处的纳秒 System.out.println(localTime.toNanoOfDay()); } }DatetimeFormatter
public class test5 { public static void main(String[] args) { //可以理解为线程安全的simpleDateFormat DateTimeFormatter dtf=DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL); System.out.println(dtf); System.out.println(dtf.format(LocalDateTime.now())); dtf=DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG); System.out.println(dtf.format(LocalDateTime.now())); dtf=DateTimeFormatter.ofPattern("yyyy/MM/dd"); System.out.println(dtf.parse("2019/05/01").getClass()); System.out.println(dtf.parse("2010/01/01").get(ChronoField.YEAR_OF_ERA)); System.out.println(dtf.getDecimalStyle()); System.out.println(dtf.getLocale()); //获取了那些对象 System.out.println(dtf.getResolverFields()); } }Duration
import java.time.Duration; import java.time.LocalDateTime; public class test6 { public static void main(String[] args) { Duration duration=Duration.ofDays(100); System.out.println(duration.getUnits()); duration=duration.abs(); System.out.println(duration); duration=Duration.from(Duration.ZERO); System.out.println(duration.getClass()); duration=Duration.ofDays(20); System.out.println(duration.dividedBy(100)); //两者的差值,这里需要使用最小单位是秒 System.out.println(Duration.between(LocalDateTime.now(),LocalDateTime.MIN)); } }Period
public class test7 { public static void main(String[] args) { Period period=Period.of(1,1,1); System.out.println(period); Period period1=Period.ZERO; System.out.println(period1); Period period2=Period.from(period1); System.out.println(period2); //为了方便相加减 System.out.println(period.negated()); } }ChronoUnit
import java.time.temporal.ChronoUnit; public class test8 { public static void main(String[] args) { System.out.println(ChronoUnit.values()); ChronoUnit chronoUnit=ChronoUnit.DAYS; System.out.println(chronoUnit.isDateBased()); for(ChronoUnit c:ChronoUnit.values()){ System.out.println(c+" "+c.getDuration()); } System.out.println(chronoUnit.isDurationEstimated()); } }