欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JDK8中的日期时间API

程序员文章站 2024-03-11 22:11:13
...

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);
    		
    	}
    
    }
    
    

JDK8中的日期时间API

例一

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);

		;
	}

}

  • 各种方法

JDK8中的日期时间API

  • 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);
		
		
	}

}

JDK8中的日期时间API

格式化

  • 格式(实例化方法)

    • 预定义标准格式: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);
    	}
    
    }
    
    
相关标签: Java基础