日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

浅析Java中的时间处理:Date.compareTo比较时间、LocalDateTime 的基本使用

發(fā)布時間:2023/12/31 综合教程 27 生活家
生活随笔 收集整理的這篇文章主要介紹了 浅析Java中的时间处理:Date.compareTo比较时间、LocalDateTime 的基本使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、Date.compareTo比較時間

DateFormat dateFormat = DateFormat.getDateInstance();
Date oldTime = dateFormat.parse("2021-04-07 19:50:11");
Date newTime = new Date();
int result = oldTime.compareTo(newTime);
System.out.println(result);  // -1

  時間相等,結(jié)果為 0;舊比新,結(jié)果為 -1;新比舊,結(jié)果為 1。

二、LocalDateTime 基本介紹

  在需求上有一個有效期,需要當(dāng)前時間 + 有效期天數(shù),得到過期時間,代碼如下,所以順帶學(xué)習(xí)了一下 LocalDateTime 的基本用法。

Date.from(LocalDateTime.now().plusDays(market.getValidDay()).toInstant(ZoneOffset.of("+8")))

  從名字上可以看出來java.time.LocalDateTime是一個可以表示日期時間的對象,代表日期時間,通常被視為年 - 月 - 日 - 時 - 分 - 秒,也提供了其他日期和時間字段,例如星期。LocalDateTime的時間精度為納秒精度(1秒=1000毫秒,1毫秒=1000微秒,1微秒=1000納秒)。

  打開jdk8的api文檔,找到j(luò)ava.time.LocalDateTime,分別了解它的構(gòu)造方法、靜態(tài)方法及對象方法等 。

  java.time.LocalDateTime沒有公開的構(gòu)造方法,需要通過靜態(tài)方法創(chuàng)建java.time.LocalDateTime對象。

1、時區(qū) —— 根據(jù)時區(qū)創(chuàng)建日期時間對象

  通過時區(qū)的 id 可確定一個時區(qū),我們常用時區(qū):

Asia/Shanghai:亞洲上海

America/Los_Angeles:美國/洛杉磯

  基于時區(qū)創(chuàng)建LocalDateTime的方法

//基于默認時區(qū)創(chuàng)建
LocalDateTime now = LocalDateTime.now();
// 基于亞洲/上海(東八區(qū))
LocalDateTime localDateTime = LocalDateTime.now(ZoneId.of("Asia/Shanghai"));

  ZoneId.of(“Asia/Shanghai”)表示得到一個時區(qū)ID(對象),也可以寫為如下方式:

//基于亞洲/上海(東八區(qū))
ZoneId zoneId = ZoneId.of("Asia/Shanghai");
LocalDateTime localDateTime = LocalDateTime.now(zoneId);

三、LocalDateTime 基本使用

1、時間初始化

//獲取當(dāng)前時間
LocalDateTime nowTime= LocalDateTime.now();

//自定義時間 of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond)
LocalDateTime endTime = LocalDateTime.of(2020, 5, 20, 5, 20, 10,00);
System.out.println("設(shè)定時間"+endTime);

2、時間比較

//比較   現(xiàn)在的時間 比 設(shè)定的時間 之前  返回的類型是Boolean類型
boolean isBefore = nowTime.isBefore(endTime);
//比較 現(xiàn)在的時間 和 設(shè)定的時候 相等 返回類型是Boolean類型 boolean euqal =nowTime.equals(endTime);
//比較 現(xiàn)在的時間 比 設(shè)定的時間 之后 返回的類型是Boolean類型 boolean isAfter = nowTime.isAfter(endTime);

3、時間獲取

// 獲取當(dāng)前時間
int year = nowTime.getYear();
int monthValue = nowTime.getMonthValue();
int dayofMonth = nowTime.getDayOfMonth();
int hour = nowTime.getHour();
int minute = nowTime.getMinute();
int second = nowTime.getSecond();
System.out.println("獲得時間:" + year + "年" +monthValue+"月"+dayofMonth+"日" + hour+"時"+minute+"分"+second+"秒");// 打印當(dāng)前時間的
DayOfWeek dayofWeek = nowTime.getDayOfWeek();//獲取星期幾
System.out.println("獲得星期:"+dayofWeek);
int dayofYear = nowTime.getDayOfYear();//獲取當(dāng)前日子為年的第幾天
System.out.println("全年:"+dayofYear+"天");

4、時間操作

// 獲取一年之前.minusYears(1) 這個 1 代表一年之前,如果是2就是兩年之前
LocalDateTime minusYears = nowTime.minusYears(1);
LocalDateTime plusYears = nowTime.plusYears(1);//一年之后
LocalDateTime minusMonths = nowTime.minusMonths(1);//一個月前
LocalDateTime plusMonths = nowTime.plusMonths(1);//一個月后
LocalDateTime BeforeWeek = nowTime.minusWeeks(1);//一個星期前
LocalDateTime AfterWeek = nowTime.plusWeeks(1);//一個星期后
LocalDateTime minusDays = nowTime.minusDays(1);//一天前
LocalDateTime plusDays = nowTime.plusDays(1);//一天后
LocalDateTime minusHours = nowTime.minusHours(1);//一個小時前
LocalDateTime plusHours = nowTime.plusHours(1);//一個小時后
LocalDateTime minusMinutes = nowTime.minusMinutes(1);//一分鐘前
LocalDateTime plusMinutes = nowTime.plusMinutes(1);//一分鐘后
LocalDateTime minusSeconds = nowTime.minusSeconds(1);//一秒前
LocalDateTime plusSeconds = nowTime.plusSeconds(1);//一秒后
LocalDateTime minusTime = nowTime.minus(23, ChronoUnit.MONTHS);//當(dāng)前時間減少23個月

5、時間做差

//計算時間差
Duration duration = Duration.between(nowTime,endTime);//時間差
long durationdays = duration.toDays(); //相差的天數(shù)long durationhours = duration.toHours();//相差的小時數(shù)long durationminutes = duration.toMinutes();//相差的分鐘數(shù)long durationmillis = duration.toMillis();//相差毫秒數(shù)long durationnanos = duration.toNanos();//相差的納秒數(shù)

6、Period時間差

Period period = Period.between(nowTime.toLocalDate(),endTime.toLocalDate());
int periodyear = period.getYears();int periodmonth = period.getMonths();
System.out.println("period相差"+periodmonth+"月");
int perioddays= period.getDays();

7、獲得特殊時間

//根據(jù)需求需要取得當(dāng)天的零點
LocalDateTime today_start = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);//當(dāng)天零點  
System.out.println(today_start);
LocalDateTime today_end = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);//獲取當(dāng)天結(jié)束時間
System.out.println(today_end);

8、LocalDataTime轉(zhuǎn)化

//LocalDataTIme轉(zhuǎn)String
String localDataTimeString= nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//String轉(zhuǎn)化為LocalDataTime LocalDateTime StringLocalDataTime = LocalDateTime.parse("2017-09-28 17:07:05",DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

9、Data轉(zhuǎn)化

//Date的轉(zhuǎn)化
Date date = Date.from(nowTime.atZone(ZoneId.systemDefault()).toInstant());
//轉(zhuǎn)化為LocalDataTime
LocalDateTime dateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
//轉(zhuǎn)為為String
String dataString = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

總結(jié)

以上是生活随笔為你收集整理的浅析Java中的时间处理:Date.compareTo比较时间、LocalDateTime 的基本使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。