• Calendar 计算日期差


    package test;
    
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    /**
     * @description 日期比较天 月 年
     * @author www.javawind.net
     */
    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);
    		
    		System.out.println(DateTest.getMonthNum("2015--1","2016-12-11"));
    		System.out.println("dasdas");
    	}
    
    	/**
    	 * @param date1
    	 *            需要比较的时间 不能为空(null),需要正确的日期格式
    	 * @param date2
    	 *            被比较的时间 为空(null)则为当前时间
    	 * @param stype
    	 *            返回值类型 0为多少天,1为多少个月,2为多少年
    	 * @return
    	 */
    	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");
    		}
    		// List list = new ArrayList();
    		while (!c1.after(c2)) { // 循环对比,直到相等,n 就是所要的结果
    			// list.add(df.format(c1.getTime())); // 这里可以把间隔的日期存到数组中 打印出来
    			n++;
    			if (stype == 1) {
    				c1.add(Calendar.MONTH, 1); // 比较月份,月份+1
    			} else {
    				c1.add(Calendar.DATE, 1); // 比较天数,日期+1
    			}
    		}
    
    		n = n - 1;
    
    		if (stype == 2) {
    			n = (int) n / 365;
    		}
    
    		System.out.println(date1 + " -- " + date2 + " 相差多少" + u[stype] + ":" + n);
    		return n;
    	}
    
    	/**
    	 * 得到当前日期
    	 * 
    	 * @return
    	 */
    	public static String getCurrentDate() {
    		Calendar c = Calendar.getInstance();
    		Date date = c.getTime();
    		SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd");
    		return simple.format(date);
    	}
    
    	public static int getMonthNum(String date1, String date2) {
    
    		String formatStyle = "yyyy-MM-dd";
    		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 e) {
    			throw new RuntimeException("date parse and set exception");
    		}
    		
    		int count = 0;
    		while (!c1.after(c2)) {
    			count++;
    			c1.add(Calendar.MONTH, 1); // 比较月份,月份+1
    		}
    		return count;
    	}
    }
    
  • 相关阅读:
    BeagleBone Black安装小米随身WiFi驱动方法
    java-ee,ssh整合博文收藏
    BeagleBoneBlack Linux开发相关链接收藏
    Debian7.7 wheezy 中源码安装emacs24
    GLOG使用注意事项
    centos、linux改变ll命令显示颜色
    centos中samba配置后始终连不上的绝招
    中兴电信光纤猫F612管理员密码获取方法
    STM32W108芯片的SWD在IAR7.30版本中不能用
    TRF7960天线参数试验
  • 原文地址:https://www.cnblogs.com/liuzyw/p/5667652.html
Copyright © 2020-2023  润新知