JAVA 1.8 特性功能(新时间日期API)

本地化日期时间 API
 LocalDateTime 类可以在处理时区不是必须的情况。代码如下:

 testLocalDateTime

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.Month;

public class dateLocalDateTimeApi {
	public static void main(String[] args) {
		dateLocalDateTimeApi java8tester = new dateLocalDateTimeApi();
	    java8tester.testLocalDateTime();
	}
	
	/*
	 * 本地化日期时间 API
	 * LocalDate/LocalTime 和 LocalDateTime 类可以在处理时区不是必须的情况。代码如下:
	 * testLocalDateTime
	 */
	private void testLocalDateTime() {
		 // 获取当前的日期时间
	      LocalDateTime currentTime = LocalDateTime.now();
	      System.out.println("当前时间: " + currentTime);
	        
	      LocalDate date1 = currentTime.toLocalDate();
	      System.out.println("date1: " + date1);
	        
	      Month month = currentTime.getMonth();
	      int day = currentTime.getDayOfMonth();
	      int seconds = currentTime.getSecond();
	        
	      System.out.println("月: " + month +", 日: " + day +", 秒: " + seconds);
	        
	      LocalDateTime date2 = currentTime.withDayOfMonth(10).withYear(2012);
	      System.out.println("date2: " + date2);
	        
	      // 12 december 2014
	      LocalDate date3 = LocalDate.of(2014, Month.DECEMBER, 12);
	      System.out.println("date3: " + date3);
	        
	      // 22 小时 15 分钟
	      LocalTime date4 = LocalTime.of(22, 15);
	      System.out.println("date4: " + date4);
	        
	      // 解析字符串
	      LocalTime date5 = LocalTime.parse("20:15:30");
	      System.out.println("date5: " + date5);
	   }
	}

使用时区的日期时间API
如果我们需要考虑到时区,就可以使用时区的日期时间API: 

 dateZonedDateTimeApi

import java.time.ZonedDateTime;
import java.time.ZoneId;
 
public class dateZonedDateTimeApi {
   public static void main(String args[]){
	   dateZonedDateTimeApi java8tester = new dateZonedDateTimeApi();
      java8tester.testZonedDateTime();
   }
    
   public void testZonedDateTime(){
    
      // 获取当前时间日期
      ZonedDateTime date1 = ZonedDateTime.parse("2015-12-03T10:15:30+05:30[Asia/Shanghai]");
      System.out.println("date1: " + date1);
        
      ZoneId id = ZoneId.of("Europe/Paris");
      System.out.println("ZoneId: " + id);
        
      ZoneId currentZone = ZoneId.systemDefault();
      System.out.println("当期时区: " + currentZone);
   }
}

其他时间处理

LocalDate 

import java.time.ZonedDateTime;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;
import java.time.LocalDate;
import java.time.ZoneId;
 
public class localDateApi {
   public static void main(String args[]){
	// 1. 获取当前日期(年-月-日)
	    LocalDate localDate = LocalDate.now();
	    System.out.println(localDate.toString());
	    // 2. 根据年月日构建Date
	    LocalDate localDate1 = LocalDate.of(2020, 01, 30);
	    // 3. 字符串转换日期,默认按照yyyy-MM-dd格式,也可以自定义格式
	    LocalDate localDate2 = LocalDate.parse("2020-01-30");
	    // 4. 获取本月第一天
	    LocalDate firstDayOfMonth = localDate.with(TemporalAdjusters.firstDayOfMonth());
	    // 5. 获取本月第二天
	    LocalDate secondDayOfMonth = localDate.withDayOfMonth(2);
	    // 6. 获取本月最后一天
	    LocalDate lastDayOfMonth = localDate.with(TemporalAdjusters.lastDayOfMonth());
	    // 7. 明天 -----打印输出
	    LocalDate tomorrowDay = localDate.plusDays(1L);
	    // 8. 昨天 -----打印输出
	    LocalDate yesterday = localDate.minusDays(1L);
	    // 9. 获取本年第12天
	    LocalDate day = localDate.withDayOfYear(120);
	    // 10. 计算两个日期间的天数
	    long days = localDate.until(localDate1, ChronoUnit.DAYS);
	    System.out.println(days);
	    // 11. 计算两个日期间的周数
	    long weeks = localDate.until(localDate1, ChronoUnit.WEEKS);
	    System.out.println(weeks);
}

同样,和LocalDate相对应的另一个类就是LocalTime,这个类恰好和LocalDate相反,它表示的全是时间,不包含日期。例子如下: 

LocalTime 

import java.time.LocalTime;

public class localTimeApi {
   public static void main(String args[]){
	   // 1. 获取当前时间,包含毫秒数 -----打印输出----- 17:40:08.393
	    LocalTime localTime = LocalTime.now();
	    System.out.println(localTime);
	    // 2. 构建时间 -----打印输出----- 12:15:30
	    LocalTime localTime1 = LocalTime.of(12, 15, 30);
	    System.out.println(localTime1);
	    // 3. 获取当前时间,不包含毫秒数 -----打印输出----- 17:40:08
	    LocalTime localTime2 = localTime.withNano(0);
	    System.out.println(localTime2);
	    // 4. 字符串转为时间,还可以有其他格式,比如12:15, 12:15:23.233
	    // -----打印输出----- 12:15:30
	    LocalTime localTime3 = LocalTime.parse("12:15:30");
	    System.out.println(localTime3);
}
}

LocalDateTime

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

 /*
  * LocalDateTime就和原先的java.util.Date很像了,
  * 既包含日期,又包含时间,它经常和DateTimeFormatter一起使用。
  */
public class dateLocalDateTimeApi {
   public static void main(String args[]){
	   // 1. 获取当前年月日 时分秒 -----打印输出----- 2020-01-08T17:49:36.226
	    LocalDateTime localDateTime = LocalDateTime.now();
	    System.out.println(localDateTime);
	    // 2. 通过LocalDate和LocalTime构建 ----- 打印输出----- 2020-01-08T17:49:36.226
	    LocalDateTime localDateTime1 = LocalDateTime.of(LocalDate.now(), LocalTime.now());
	    System.out.println(localDateTime1);
	    // 3. 构建年月日 时分秒 -----打印输出----- 2020-01-29T19:23:13
	    LocalDateTime localDateTime2 = LocalDateTime.of(202, 01, 29, 19, 23, 13);
	    System.out.println(localDateTime2);
	    // 4. 格式化当前时间 ----打印输出----- 2020/01/29
	    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
	    System.out.println(formatter.format(localDateTime2));
	    //使用LocalDateTime的with开头的方法可以设置相应的时间,小时,分钟等,比如:
	    // 设置分钟数 
	    //5、打印输出----2020-01-08T17:23:36.239
	    LocalDateTime localDateTime3 = LocalDateTime.now().withMinute(23);
	    System.out.println(localDateTime3);
}
}

TemporalAdjusters 

import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;

 /*
  * 该类是一个计算用的类,提供了各种各样的计算方法。比如某个月的第一天,某个月的最后一天,
  * 某一年的第一天,某一年的第几天等各种计算方法。
  * 该类内部实现基本上全都是通过JDK8的Lambda表达式来实现的。随便举一些例子,都很简单。
  * 
  */
public class dateTemporalAdjustersApi {
   public static void main(String args[]){
	   
	LocalDate localDate = LocalDate.now();
       
	// 1. 本月第一天
	LocalDate firstDayOfMonth = localDate.with(TemporalAdjusters.firstDayOfMonth());
	System.out.println(firstDayOfMonth);
	// 2. 本月最后一天
	LocalDate lastDayOfMonth = localDate.with(TemporalAdjusters.lastDayOfMonth());
	System.out.println(lastDayOfMonth);
	// 3. 本年第一天
	LocalDate firstDayOfYear = localDate.with(TemporalAdjusters.firstDayOfYear());
	System.out.println(firstDayOfYear);
	// 4. 下个月第一天
	LocalDate firstDayOfNextMonth = localDate.with(TemporalAdjusters.firstDayOfNextMonth());
	System.out.println(firstDayOfNextMonth);
	// 5. 本年度最后一天
	LocalDate lastDayOfYear = localDate.with(TemporalAdjusters.lastDayOfYear());
	System.out.println(lastDayOfYear);
}
发布了97 篇原创文章 · 获赞 13 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/weixin_39559301/article/details/103894792
今日推荐