我是靠谱客的博主 活力大船,最近开发中收集的这篇文章主要介绍JDK8中的日期时间API,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

JDK中的新时间日期API

主要的类

  • LocalTime:表示一个时间,而不是日期。

  • LocalDate:代表IOS格式(yyyy-MM-dd)的日期,可以存储 生日、纪念日等日期

  • LocalDateTime:是用来表示日期和时间的,这是一个最常用的类之一。

  • 引进原因

    • 偏移性:年份从1900开始,月份从0开始
    • 可变性:日期时间应该是不变的
    package DateTime;
    
    import java.time.LocalDate;
    import java.time.LocalDateTime;
    import java.util.Date;
    
    public class Demo09 {
    	public static void main(String[] args) {
    		//Date类的偏移性:创建袷日期2020-09-8
    		 Date date1 = new Date(2020,9,8);//偏移性
    		 System.out.println(date1);
    		 Date date2 = new Date(2020-1900,8,8);//减去偏移量才能正确创建
    		 System.out.println(date2);
    		
    	}
    
    }
    
    

在这里插入图片描述

例一

package DateTime;

import java.sql.Date;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

/*
 * JDK8中的日期API
 * 类似与Calendar,且具有不可变性
 */
public class Demo05 {
	public static void main(String[] args) {
		// now()获取当前日期,时间,时间日期
		LocalDate now = LocalDate.now();
		LocalTime now2 = LocalTime.now();
		LocalDateTime now3 = LocalDateTime.now();
		System.out.println("LocalDateL:" + now);
		System.out.println("LocalTime:" + now2);
		System.out.println("LocalDateTime:" + now3);
		// of方法:根据指定日期时间创建对象
		System.out.println("**********of*************");
		LocalDate date = LocalDate.of(2020, 8, 28);
		LocalTime time = LocalTime.of(23, 10);
		LocalDateTime dateTime = LocalDateTime.of(2020, 8, 31, 23, 18);
		System.out.println("日期:"+date);
		System.out.println("时间:"+time);
		System.out.println("日期时间:"+dateTime);
		System.out.println("*********get***********");
		// get()方法
		System.out.println(now.getDayOfYear());// 217
		System.out.println(now.getMonthValue());// 8
		System.out.println(now.getMonth());// august
		System.out.println(now.getDayOfWeek());// Tuesday
		System.out.println("*******with************");
		// withxxx:设置相关属性
		LocalDate date2 = now.withDayOfMonth(8);
		System.out.println(now.getDayOfMonth());// 5
		System.out.println(date2);// 返回值改变,原有的不变
		System.out.println("*****plus/minus*********");
		// plus :加操作
		LocalDateTime plusMonths = now3.plusMonths(3);
		System.out.println(plusMonths);
		// minus:减多少天
		LocalDateTime minusDays = now3.minusDays(5);
		System.out.println(minusDays);

		;
	}

}

  • 各种方法

在这里插入图片描述

  • now();
  • get()
  • plus()
  • minus()

Instant类

  • 时间线上的一个瞬时点。 这可能被用来记录应用程序中的事件时间戳
  • (1 ns = 10 -9 s) 1秒 = 1000毫秒 =106微秒=109纳秒
package DateTime;
/*
 * instant的使用
 */

import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;

public class Demo06 {
	public static void main(String[] args) {
		//实例化一个对象
		Instant is = Instant.now();
		System.out.println(is);//本初子午线的时间,东八区加8
		OffsetDateTime atOffset = is.atOffset(ZoneOffset.ofHours(8));//添加时间偏移量
		//获取毫秒数
		long milli = is.toEpochMilli();
		System.out.println(milli);
		//通过给定的毫秒数获取Instant实例
		Instant instant = Instant.ofEpochMilli(milli);
		System.out.println(instant);
		
		
	}

}

在这里插入图片描述

格式化

  • 格式(实例化方法)

    • 预定义标准格式:ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIME
    • 本地化相关格式:fLocalizedDateTime(FormatStyle.LONG)
    • 自定义的格式。如:ofPattern(“yyyy-MM-dd hh:mm:ss”)
    package DateTime;
    /*
     * DateTimeFoarmatter类:格式化或解析日期时间
     * 
     */
    
    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    import java.time.format.FormatStyle;
    import java.time.temporal.TemporalAccessor;
    
    public class Demo07 {
    	// 方式一:ISO_LOCA_DATE_TIME;ISO_LOCA_DATE;ISO_LOCA_TIME
    	private void DateTiemFormatter() {
    		// TODO Auto-generated method stub
    		// 格式化
    		DateTimeFormatter dtf = DateTimeFormatter.ISO_LOCAL_DATE_TIME;//
    		LocalDateTime ldt = LocalDateTime.now();
    		String str1 = dtf.format(ldt);
    		System.out.println(str1);
    		// 解析
    		TemporalAccessor parse = dtf.parse(str1);
    		System.out.println(parse);
    		// 本地相关化格式:ofLocalizedDateTime()
    		// 三种参数:FormatStyle.LONG/FormatStyle.MEDIUM/FormatStyle.SHORT 适用于LocalDateTiem
    		DateTimeFormatter dtf1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
    		String str2 = dtf1.format(ldt);
    		System.out.println(str2);
    		// 方式三:自定义格式ofPattern()
    		DateTimeFormatter dtf3 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
    		String str4 = dtf3.format(LocalDateTime.now());
    		System.out.println(str4);
    		// 解析
    		TemporalAccessor parse2 = dtf3.parse("2020-08-05T08:09:29.399Z");
    		System.out.println(parse2);
    	}
    
    }
    
    

最后

以上就是活力大船为你收集整理的JDK8中的日期时间API的全部内容,希望文章能够帮你解决JDK8中的日期时间API所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部