我有整數表示兩個日期的月份,日期和年份。如何計算它們之間的差異是否大於20年?我在註冊新用戶時使用了這個功能。如何計算兩個日期之間的差異是否大於20年?
回答
使用Joda-Time,期間! :)
雖然「超過20年」可能在某種程度上取決於您談論的是哪種日曆,但當您開始計算數量,閏年或夏令時時,Joda-Time會爲您提供更大的靈活性, util.Calendar類。不建議使用util.Date,並計算毫秒(或其他類似的事情)可能會導致錯誤的代碼。
JODA-TIME代碼示例:
考慮:
int year1 = 2012, month1 = 2, day1 = 7;
int year2 = 1987, month2 = 7, day2 = 23;
//You can include a TimeZone if needed in the constructors below
DateTime dateTime1 = new DateTime(year1, month1, day1, 0, 0); //2012-02-07T00:00:00.000-05:00
DateTime dateTime2 = new DateTime(year2, month2, day2, 0, 0); //1987-07-23T00:00:00.000-04:00
選項1,無聊......
DateTime twentyYearsBefore = dateTime1.minusYears(20); //1992-02-07T00:00:00.000-05:00
if(dateTime2.compareTo(twentyYearsBefore) == -1)
System.out.println("The difference between the dates is greater than 20 years");
選項2,好東西!
Days d = Days.daysBetween(dateTime1, dateTime2);
int days = d.getDays(); //-8965 days
System.out.println("There are " + days + " days between the two dates");
選項3,火箭科學! ;)
Period periodDifference = new Period(dateTime1, dateTime2);
System.out.println(periodDifference); //prints: P-24Y-6M-2W-1D
感謝您與Joda的鏈接,我以前沒有遇到過這種情況,這似乎是非常有用的日期/時間實現。 – FoamyGuy 2012-02-09 14:39:59
Calendar Day1 = Calendar.getInstance();
Day1.set(Calendar.DAY_OF_MONTH, day1 - 1);
Day1.set(Calendar.MONTH, month1 - 1); // 0-11 so 1 less
Day1.set(Calendar.YEAR, year1);
Calendar Day2 = Calendar.getInstance();
Day2.set(Calendar.DAY_OF_MONTH, day2 - 1);
Day2.set(Calendar.MONTH, month2 - 1); // 0-11 so 1 less
Day2.set(Calendar.YEAR, year2);
long twenty_years = 31536000000 * 20;
long diff;
if(Day1.compareTo(Day2) == 1)
long diff = Day1.getTimeInMillis() - Day2.getTimeInMillis();
else
long diff = Day2.getTimeInMillis() - Day1.getTimeInMillis();
if(diff > twenty_years){
// do something
}
不能確定二十年的價值...... – Gevorg 2012-02-07 17:09:53
這是一個非常簡單的方法;
int date1 = year1 * 10000 + month1 * 100 + day1;
int date2 = year2 * 10000 + month2 * 100 + day2;
boolean greaterThan20 = (date2 - date1) >= 200000;
我認爲有些事情是應該做的伎倆很簡單。
double date1 = year + (month/12.0) + (day/365.0);
double date2 = year2 + (month2/12.0) + (day2/365.0);
if(Math.abs(date1 - date2) >= 20.0)
//bigger
不確定它是否會由於閏年而給出錯誤的結果。 – warbio 2012-02-07 14:53:50
您可以使用
Date(int year, int month, int date)
讓你的價值觀爲日期格式。
然後你就可以減去一個從其他和值轉換爲年。
java.util.Date lateDate, earlyDate;
lateDate = Date(year1,month1,day1);
earlyDate = Date(year2,month2,day2);
deltaDays = (lastDate.getTime() - earlyDate.getTime())/ MILLSECS_PER_DAY;
deltaDays = deltaDays/DAYS_IN_A_YEAR;
如果你不需要擔心閏年,那很好。 – 2012-02-07 15:53:38
不推薦使用日期(int year,int month,int date) – Gevorg 2012-02-07 17:01:58
- 1. 如何計算兩個日期之間的年差數?
- 2. 如何計算Javascript中兩個日期之間的年,月和日差異?
- 3. JScript:如何計算兩個日期時間之間的差異?
- 4. 計算兩個datetime.date()日期之間在年份和月份之間的差異
- 5. 如何計算兩個日期之間的差異
- 6. 如何計算兩個日期之間的差異正確php
- 7. 如何計算Objective-C中兩個日期之間的差異?
- 8. 如何計算VB.net中兩個日期之間的差異?
- 9. 如何用PHP計算兩個日期之間的差異?
- 10. 如何使用Node.js計算兩個日期之間的差異?
- 11. 如何計算兩個日期之間的差異?
- 12. 如何計算IronPython中兩個日期之間的差異?
- 13. 如何計算日期間隔中兩行之間的差異?
- 14. 計算兩個日期字段的計數之間的差異
- 15. 計算javascript中兩個日曆日期之間的差異
- 16. 計算MySQL中兩個日期時間之間的差異
- 17. 計算MVC中兩個日期時間之間的差異5
- 18. 計算兩個日期之間的差異並獲得年份的值?
- 19. 找到兩個日期之間的差異正好是1年
- 20. 計算日期之間的差異 - Postgres
- 21. C計算日期之間的差異
- 22. 如何計算兩個日期之間的時間差 - MySql
- 23. 如何計算兩個日期之間的時間差? - MySql
- 24. 如何在年,月,日兩個日期之間計算datediff?
- 25. 檢查兩個日期之間的差異是否超過20分鐘
- 26. 兩個日期之間的計算差異MySQL/Python
- 27. 使用Groovy計算兩個日期之間的月差異
- 28. 計算PHP中兩個日期之間的差異
- 29. 計算兩個日期之間的差異
- 30. 試圖計算兩個日期之間的差異
本質http://stackoverflow.com/questions/3838527/android-java-date-difference-in-days ... – mikebabcock 2012-02-07 14:43:51
的副本,下面這些是不是真的只是if(year1 + 20)> = year2 ...之間的比較 – Bry6n 2012-02-07 14:45:52
其值得一提的是,平均每年有365.25天(自1901年以來)它的365.2425 – 2012-02-07 15:54:59