1. 程式人生 > >Java8 Period.between方法坑及注意事項

Java8 Period.between方法坑及注意事項

在使用Java8 新特性中關於Period.between的方法時需注意該方法獲取日期的區間問題。

@Test
public void test1(){
    LocalDate from = LocalDate.of(2018,10,1);
    System.out.println(Period.between(from,LocalDate.now()).getDays());
}

首先,猜測一下上面的程式碼返回的天數是多少?15天,你猜對了嗎?

如果不理解為什麼是15天,那麼咱們再列印一下其他的心氣,你可能就明白了。

@Test
public void test1(){
    LocalDate from = LocalDate.of(2017,9,1);
    Period period = Period.between(from,LocalDate.now());

    System.out.println("2017-09-01到當前日期" + LocalDate.now());
    System.out.println("距離當前多少年:" + period.getYears());
    System.out.println("距離當前多少月:" + period.getMonths());
    System.out.println("距離當前多少日:" + period.getDays());
}

在此執行程式,列印日誌如下:

2017-09-01到當前日期2019-10-16
距離當前多少年:2
距離當前多少月:1
距離當前多少日:15

看了下面的日誌資訊,明白是怎麼回事了吧。Period中時間區間如果是2年1個月15天。那麼通過getDays()方法獲得就是第三個儲存15天。而不是2年1個月15天總共有多少天。

那麼如果想算兩個日期直接的距離該怎麼辦呢?可採用下面的方法。

@Test
public void test2() {
    LocalDate from = LocalDate.of(2017, 9, 1);
    long day = LocalDate.now().toEpochDay() - from.toEpochDay();
    System.out.println("距離當前多少日:" + day);
}

執行結果為:

距離當前多少日:775

原文連結:《Java8 Period.between方法坑及注意事項》


程式新視界:精彩和成長都不容錯過

相關推薦

Java8 Period.between方法注意事項

在使用Java8 新特性中關於Period.between的方法時需注意該方法獲取日期的區間問題。 @Test public void test1(){ LocalDate from = LocalDate.of(2018,10,1); System.out.println(Period.be

IOS addChildViewController方法使用注意事項

在iOS 5.0及以後,iOS為UIViewController類添加了新的屬性和方法:123456@property(nonatomic,readonly) NSArray *childViewControllers- (void)addChildViewControlle

保留幾位有效數字 多種方法實現注意事項

Note: the results of this constructor can be somewhat unpredictable. One might assume that new BigDecimal(.1) is exactly equal to .1, but it is actually eq

重灌系統後,重新安裝ORACLE加環境變數配置、客戶端PL/SQL的安裝過程,注意事項(避免再次踩

(1)首先了解什麼是OERACLE及Oracle與PL/SQL是什麼關係: ORACLE是資料庫,有客戶端和伺服器; PLSQL Developer只是第三方工具,服務於ORACLE,類似的工具還有Toad,sqlplus,sql developer等等; 安裝PLSQL Developer

【C++】向量(vector) 基本使用方法注意事項

介紹: 向量(Vector)是一個封裝了動態大小陣列的順序容器(Sequence Container)。跟任意其它型別容器一樣,它能夠存放各種型別的物件。可以簡單的認為,向量是一個能夠存放任意型別的動態陣列。 特點: 1.順序序列 順序容器中的元素按照嚴格的線性順序排序。可以通過元素

仙人劍花怎麼養 仙人劍花的養殖方法注意事項

劍花也稱霸王花、七星劍花、龍骨花,為仙人掌科量天尺屬植物量天尺的花。夏、秋間採收淨花,縱向切開(基部相連),略蒸後,晒乾。量天尺又名:龍骨花(海南保亭),霸王鞭(海南三亞,廣東肇慶),三角柱、三稜箭(北京俗稱)。很多朋友不知道如何養殖仙人劍花,下面來介紹一下。 從生長環境溫度方面來說

分享知識-快樂自己:Struts2(動態方法、動態結果、萬用字元、方法內部跳轉、action跳轉、OGNL 的使用注意事項

這裡主要以案例演示:涵蓋以下知識點 1、動態方法呼叫:使用關鍵 符號 ! 進行操作   例如:/名稱空間 ! 方法名 2、動態結果集:就是說,通過後臺返回的結果 ${} 獲取,重定向到符合預期的頁面。 3、萬能萬用字元:*_*  :第一個 * 為 類名、第二個 * 為方

ORACLE分割槽表梳理系列(一)- 分割槽表概述、分類、使用方法注意事項

前言 本文著重闡述分割槽表的概念、優勢,以及常用分割槽表的使用方法及使用過程中的注意事項。 對於分割槽表的日常維護方法,如:索引的維護、分割槽的合併等,將在後續文章中再詳細介紹。 本文涉及的相應演示,使用的資料庫版本為oracle 11.2.0.4。 本文常用分割槽表的使

DML和DQL使用方法注意事項

MySQL的儲存引擎 儲存引擎的型別     MyISAM、InnoDB 、Memory、CSV等9種 MyISAM與InnoDB型別主要區別             InnoDB                MyISAM 事務處理        支援          

藍雪花怎麼養 藍雪花養殖方法注意事項

藍雪花簡介: 別稱山灰柴、假靛(河南),角柱花等,多年多年生直立草本,為白花丹科、藍雪花屬植物。 藍雪花長勢強健,耐熱,較耐高溫高溼,病蟲害少,管理簡單,觀賞期長。葉色翠綠,花色淡雅,炎熱的夏季給

一次使用innobackupex重新搭建主從複製報錯解決方法注意事項

【環境介紹】   系統環境:CentOS release 6.4 (Final) + Server version: 5.7.18-log MySQL Community Server (GPL) + innobackupex version 2.4.12 Linux (x86_64)

jQuery呼叫Servlet方法注意事項

雖然現在很多網站用框架了,但Servlet還是JAVA初學者必學的知識點,對於普通的小網站用Servlet也能滿足需要,以下是如何用MyClipse建立Servlet的步驟及注意事項: 第一步:建立Servlet,可用File->New->other->輸

java中方法的過載注意事項

/*方法的過載特性(overload)在同一個類中,允許出現同名的方法,只要方法的引數列表不同即可,這就是方法的過載引數列表不同:引數個數不同,資料型別不同,順序不同方法過載的注意事項1.引數列表必須相同2.過載和引數變數名無關3.過載和返回值型別無關4.過載和修飾符無關技巧

vector.erase() 的使用方法注意事項

1 使用方法 vector.erase()的功能從指定容器中刪除指定位置的元素或某段範圍內的元素,有以下兩種過載方式: iterator erase( iterator _Where);//刪

【Python】程序與程序池的屬性方法注意事項

1、程序的概念       程序(Process)是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。在早期面向程序設計的計算機結構中,程序是程式

break 和 continue 的使用方法注意事項

/* break: 跳出 使用範圍:要麼是  switch 語句  要麼是迴圈語句 注意:當break 語句單獨存在時,下面不要定義其他語句,因為執行不到       break 跳出的當前的迴圈語句 */ class  ifDemo {     public static

Tensorflow兩種資料讀取方法應用、對比注意事項

本文對比介紹了兩種Tensorflow針對大資料集的資料讀取方法,具體來說是:方法1:tf.train.slice_input_producer+流水線(這裡用這個API指代這一類,其實還有其他的API)。方法2:Dataset方法,據說是Tensorflow 1.3版本之後

【java基礎】abstract抽象類、方法的特點注意事項

摘要:本文引自畢老師Java程式碼。 /* 抽象類: 抽象:籠統,模糊,看不懂!不具體。 特點: 1,方法只有宣告沒有實現時,該方法就是抽象方法,需要被abstract修飾。 抽象方法必須定義在抽象類中。該類必須也被abstract修飾。 2,抽象類不可以被例項化。

關於Android 5.0 、6.0 、 7.0程式碼設定WIFI連線方式為靜態IP或DHCP的方法注意事項

注意:Android6.0以上app不具備刪除,修改WiFi許可權。 如果是自己APP通過程式碼連線的,(如果系統本來就記住了該WIFI,APP裡通過程式碼在連線一次不算),需要許可權 <uses-permission android:name="android.p

Android中LayoutInflater類的inflate方法的使用注意事項

轉自:http://www.ithao123.cn/content-10951307.html [摘要:我們正在講一個界說好的結構檔案(xml)檔案減載到界裡上揭示出去的時間,平常會用到LayoutInflater的inflate方式,仔細的同硯會發明那個方式有四種過載,