2015-10-17 21 views

回答

0

首先,你需要兩個日期戳;一個用於帳戶創建日期,第二個用於「now」。

然後就簡單地把兩日戳到標量值用相同的單位(例如,使用Calendar.getTime()給你毫秒,因爲一些「曆元」),減去從另一個,看到如果差更多,更少或等於1年== 365天(在相關單位中)。

如果您在談論「日曆年」(例如考慮閏年等),那麼它會變得更加複雜,並且規則可能是特定於語言環境的。


我推薦你使用java.time類,而不是老Calendar API。如果你是新來這個,通過讀取甲骨文的Java教程開始"Lesson: Date-Time Overview"

+0

你碰巧知道這個語法嗎?我完全不熟悉Calendar對象。如果我們只用365天而不用擔心閏年等。 –

+0

你失去了我。 「日曆」對象不會對任何<<語法進行編碼。該語法是日期的字符串表示形式,當您從中創建「日曆」對象時,它將消失。這也適用於表示日期/時間值的其他Java類。 –

1

java.time

老java.util.Date/.Calendar類已經被內置到Java 8.0中的新java.time框架取代和以後(​​)。如果您確實需要.Calendar,請在StackOverflow上發佈已存在的數百個此類問題中的任何一個。

下面是java.time中的一些示例代碼。 LocalDate類代表沒有時間或時區的僅限日期的值。但請注意,確定今天的日期需要一個時區。

// Then. 
LocalDate then = LocalDate.parse ("2012-01-08"); 

// Now. 
ZoneId zoneId = ZoneId.of ("America/Montreal"); 
LocalDate today = LocalDate.now (zoneId); 

// Elapsed. 
Period period = Period.between (then , today); 
int years = period.getYears(); 

// Business logic. 
Boolean atLeastOneYearHasPassed = (years >= 1); 

轉儲到控制檯。

System.out.println ("From then: " + then + " to today: " + today + ", atLeastOneYearHasPassed: " + atLeastOneYearHasPassed + ", years: " + years); 

運行時。

從那時:2012-01-08到今天:2015年10月17日,atLeastOneYearHasPassed:真,年:3

相關問題