在项目开发当中,我们时常碰到要比较两个时间或者与当前时间相差多少天,多少个月,多少年的问题。
本人结合网上的一些例子,稍作修改,提供出下面示例,与网友们分享。
具体实现方法见注释。如果有更好的方法,请回帖提出,感谢!
java代码
- package com.test;
-
- import java.text.DateFormat;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Date;
-
-
-
-
-
-
- public class DateTest {
-
- public static void main(String[] args) {
- String date = "2008-06-12";
-
- DateTest.compareDate(date, null, 0);
- DateTest.compareDate(date, null, 1);
- DateTest.compareDate(date, null, 2);
-
- date = "2006-06-03";
- DateTest.compareDate(date, null, 0);
- DateTest.compareDate(date, null, 1);
- DateTest.compareDate(date, null, 2);
- DateTest.compareDate(date, "2009-06-01", 0);
- DateTest.compareDate(date, "2009-06-01", 1);
- DateTest.compareDate(date, "2009-06-01", 2);
- }
-
-
-
-
-
-
-
- public static int compareDate(String date1,String date2,int stype){
- int n = 0;
-
- String[] u = {"天","月","年"};
- String formatStyle = stype==1?"yyyy-MM":"yyyy-MM-dd";
-
- date2 = date2==null?DateTest.getCurrentDate():date2;
-
- DateFormat df = new SimpleDateFormat(formatStyle);
- Calendar c1 = Calendar.getInstance();
- Calendar c2 = Calendar.getInstance();
- try {
- c1.setTime(df.parse(date1));
- c2.setTime(df.parse(date2));
- } catch (Exception e3) {
- System.out.println("wrong occured");
- }
-
- while (!c1.after(c2)) {
-
- n++;
- if(stype==1){
- c1.add(Calendar.MONTH, 1);
- }
- else{
- c1.add(Calendar.DATE, 1);
- }
- }
-
- n = n-1;
-
- if(stype==2){
- n = (int)n/365;
- }
-
- System.out.println(date1+" -- "+date2+" 相差多少"+u[stype]+":"+n);
- return n;
- }
-
-
-
-
-
- public static String getCurrentDate() {
- Calendar c = Calendar.getInstance();
- Date date = c.getTime();
- SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd");
- return simple.format(date);
-
- }
- }
运行结果:
2008-06-12 -- 2009-06-09 相差多少天:362
2008-06-12 -- 2009-06-09 相差多少月:12
2008-06-12 -- 2009-06-09 相差多少年:0
2006-06-03 -- 2009-06-09 相差多少天:1102
2006-06-03 -- 2009-06-09 相差多少月:36
2006-06-03 -- 2009-06-09 相差多少年:3
2006-06-03 -- 2009-06-01 相差多少天:1094
2006-06-03 -- 2009-06-01 相差多少月:36
2006-06-03 -- 2009-06-01 相差多少年:2