首页 > 移动平台 > 详细

android 工具类 DateUtil

时间:2014-06-05 12:43:23      阅读:581      评论:0      收藏:0      [点我收藏+]

提取了一些在开发过程中可能会用到的日期相关的函数作为工具类,供大家参考:


/**
 * 日期操作工具类.
 * 
 * @author shimiso
 */

public class DateUtil {

	private static final String FORMAT = "yyyy-MM-dd HH:mm:ss";

	public static Date str2Date(String str) {
		return str2Date(str, null);
	}

	public static Date str2Date(String str, String format) {
		if (str == null || str.length() == 0) {
			return null;
		}
		if (format == null || format.length() == 0) {
			format = FORMAT;
		}
		Date date = null;
		try {
			SimpleDateFormat sdf = new SimpleDateFormat(format);
			date = sdf.parse(str);

		} catch (Exception e) {
			e.printStackTrace();
		}
		return date;

	}

	public static Calendar str2Calendar(String str) {
		return str2Calendar(str, null);

	}

	public static Calendar str2Calendar(String str, String format) {

		Date date = str2Date(str, format);
		if (date == null) {
			return null;
		}
		Calendar c = Calendar.getInstance();
		c.setTime(date);

		return c;

	}

	public static String date2Str(Calendar c) {// yyyy-MM-dd HH:mm:ss
		return date2Str(c, null);
	}

	public static String date2Str(Calendar c, String format) {
		if (c == null) {
			return null;
		}
		return date2Str(c.getTime(), format);
	}

	public static String date2Str(Date d) {// yyyy-MM-dd HH:mm:ss
		return date2Str(d, null);
	}

	public static String date2Str(Date d, String format) {// yyyy-MM-dd HH:mm:ss
		if (d == null) {
			return null;
		}
		if (format == null || format.length() == 0) {
			format = FORMAT;
		}
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		String s = sdf.format(d);
		return s;
	}

	public static String getCurDateStr() {
		Calendar c = Calendar.getInstance();
		c.setTime(new Date());
		return c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-"
				+ c.get(Calendar.DAY_OF_MONTH) + "-"
				+ c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE)
				+ ":" + c.get(Calendar.SECOND);
	}

	/**
	 * 获得当前日期的字符串格式
	 * 
	 * @param format
	 * @return
	 */
	public static String getCurDateStr(String format) {
		Calendar c = Calendar.getInstance();
		return date2Str(c, format);
	}

	// 格式到秒
	public static String getMillon(long time) {

		return new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(time);

	}

	// 格式到天
	public static String getDay(long time) {

		return new SimpleDateFormat("yyyy-MM-dd").format(time);

	}

	// 格式到毫秒
	public static String getSMillon(long time) {

		return new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS").format(time);

	}
	
		
	/*
	 输入的是String,格式诸如20120102,实现加一天的功能,返回的格式为String,诸如20120103
	 */
	public static String stringDatePlus(String row) throws ParseException{
		String year=row.substring(0, 4);
		String month=row.substring(4,6);
		String day=row.substring(6);
		String date1=year+"-"+month+"-"+day;
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		Date startDate=sdf.parse(date1);
		Calendar cd = Calendar.getInstance();  
		cd.setTime(startDate);
		cd.add(Calendar.DATE, 1);
		String dateStr =sdf.format(cd.getTime());
		String year1=dateStr.substring(0,4);
		String month1=dateStr.substring(5,7);
		String day1=dateStr.substring(8);
		return year1+month1+day1;
	}
	
	/*
	 输入的是String,格式诸如20120102,实现减一天的功能,返回的格式为String,诸如20120101
	 */
	public static String stringDateDecrease(String row) throws ParseException{
		String year=row.substring(0, 4);
		String month=row.substring(4,6);
		String day=row.substring(6);
		String date1=year+"-"+month+"-"+day;
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		Date startDate=sdf.parse(date1);
		Calendar cd = Calendar.getInstance();  
		cd.setTime(startDate);
		cd.add(Calendar.DATE, -1);
		String dateStr =sdf.format(cd.getTime());
		String year1=dateStr.substring(0,4);
		String month1=dateStr.substring(5,7);
		String day1=dateStr.substring(8);
		return year1+month1+day1;
	}
	
	/*
	 输入的格式为String,诸如20120101,返回的格式为String,诸如2012-01-01
	 */
	public static String stringDateChange(String date)
	{
		if(date.length()=="20120101".length()){
			String year=date.substring(0, 4);
			String month=date.substring(4,6);
			String day=date.substring(6);
			return year+"-"+month+"-"+day;
		}else{
			return date;
		}
		
		
	}
	/**
	 * 日期向后推一天
	 * @param date 格式:20120101 
	 * @return  20120102
	 */
	public static String tonextday(String date){
		int year = Integer.parseInt(date.substring(0,4));
		int month = Integer.parseInt(date.substring(4,6));
		int day = Integer.parseInt(date.substring(6));
		Calendar calendar = Calendar.getInstance();
		calendar.set(year, month-1, day+1);
		Date newdate = calendar.getTime();
		SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
		String da = format.format(newdate);
		return da;
	}
	public static void main(String[] args) {
		new StringHandle().previousWeekEndDayByDate("20130109");
	}

	/**
	 * 获取当前日期上一周的开始日期 (周日)
	 */
	public static String previousWeekByDate(String date) {
		int year = Integer.parseInt(date.substring(0,4));
		int month = Integer.parseInt(date.substring(4,6));
		int day = Integer.parseInt(date.substring(6));
		Calendar calendar = Calendar.getInstance();
		calendar.set(year, month-1, day);
		Date newdate = calendar.getTime();
		SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); 
	    Calendar cal = Calendar.getInstance();
	    cal.setTime(newdate);
	    int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
	    if(1 == dayWeek) {
	    	cal.add(Calendar.DAY_OF_MONTH, -1);
	    }
	    cal.setFirstDayOfWeek(Calendar.SUNDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
	    int s = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
	    cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-s);//根据日历的规则,给当前日期减往星期几与一个星期第一天的差值 
	    cal.add(Calendar.WEEK_OF_YEAR, -1);
	    String imptimeBegin = sdf.format(cal.getTime());
//	    System.out.println("所在周星期日的日期:"+imptimeBegin);
	    return imptimeBegin;
	}
	
	
	/**
	 * 获取当前日期上一周的结束日期 (周六)
	 */
	public static String previousWeekEndDayByDate(String date) {
		int year = Integer.parseInt(date.substring(0,4));
		int month = Integer.parseInt(date.substring(4,6));
		int day = Integer.parseInt(date.substring(6));
		Calendar calendar = Calendar.getInstance();
		calendar.set(year, month-1, day);
		Date newdate = calendar.getTime();
		SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); 
	    Calendar cal = Calendar.getInstance();
	    cal.setTime(newdate);
	    int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
	    if(1 == dayWeek) {
	    	cal.add(Calendar.DAY_OF_MONTH, -1);
	    }
	    cal.setFirstDayOfWeek(Calendar.SUNDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
	    int s = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
	    cal.add(Calendar.DATE, cal.getFirstDayOfWeek()+(6-s));
	    cal.add(Calendar.WEEK_OF_YEAR, -1);
	    String imptimeBegin = sdf.format(cal.getTime());
//	    System.out.println("星期六的日期:"+imptimeBegin);
	    return imptimeBegin;
	}
	
	
	/**
	 * 获取当前日期当前一周的开始日期 (周日)
	 */
	public static String getCurrentWeekFirstDayByDate(String date) {
		int year = Integer.parseInt(date.substring(0,4));
		int month = Integer.parseInt(date.substring(4,6));
		int day = Integer.parseInt(date.substring(6));
		Calendar calendar = Calendar.getInstance();
		calendar.set(year, month-1, day);
		Date newdate = calendar.getTime();
		SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); 
	    Calendar cal = Calendar.getInstance();
	    cal.setTime(newdate);
	    int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
	    if(1 == dayWeek) {
	    	cal.add(Calendar.DAY_OF_MONTH, -1);
	    }
	    cal.setFirstDayOfWeek(Calendar.SUNDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
	    int s = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
	    cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-s);//根据日历的规则,给当前日期减往星期几与一个星期第一天的差值 
	  
	    String imptimeBegin = sdf.format(cal.getTime());
	  //  System.out.println("所在周星期日的日期:"+imptimeBegin);
	    return imptimeBegin;
	}
	/**
	 * 获取当前日期当前一周的结束日期 (周六)
	 */
	public static String getCurrentWeekEndDayByDate(String date) {
		int year = Integer.parseInt(date.substring(0,4));
		int month = Integer.parseInt(date.substring(4,6));
		int day = Integer.parseInt(date.substring(6));
		Calendar calendar = Calendar.getInstance();
		calendar.set(year, month-1, day);
		Date newdate = calendar.getTime();
		SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); 
	    Calendar cal = Calendar.getInstance();
	    cal.setTime(newdate);
	    int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
	    if(1 == dayWeek) {
	    	cal.add(Calendar.DAY_OF_MONTH, -1);
	    }
	    cal.setFirstDayOfWeek(Calendar.SUNDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
	    int s = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
	    cal.add(Calendar.DATE, cal.getFirstDayOfWeek()+(6-s));
	  
	    String imptimeBegin = sdf.format(cal.getTime());
	    return imptimeBegin;
	}
	
	
/**
 * 返回上一个月的第一天
 * @param date20120304
 * @return  20120201
 */
	public static String previousMonthByDate(String date) {
		// TODO Auto-generated method stub
		int year = Integer.parseInt(date.substring(0,4));
		int month = Integer.parseInt(date.substring(4,6));
		int day = Integer.parseInt(date.substring(6));
		Calendar calendar = Calendar.getInstance();
		calendar.set(year, month-2, 1);
		Date newdate = calendar.getTime();
		SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); 
	    Calendar cal = Calendar.getInstance();
	    cal.setTime(newdate);
	    String imptimeBegin = sdf.format(cal.getTime());
//	    System.out.println(imptimeBegin);
		return imptimeBegin;
	}
	
	/**
	 * 返回下一个月的第一天
	 * @param date20120304
	 * @return  20120401
	 */
	public static String nextMonthByDate(String date) {
		// TODO Auto-generated method stub
		int year = Integer.parseInt(date.substring(0,4));
		int month = Integer.parseInt(date.substring(4,6));
		int day = Integer.parseInt(date.substring(6));
		Calendar calendar = Calendar.getInstance();
		calendar.set(year, month, 1);
		Date newdate = calendar.getTime();
		SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); 
	    Calendar cal = Calendar.getInstance();
	    cal.setTime(newdate);
	    String imptimeBegin = sdf.format(cal.getTime());
//	    System.out.println(imptimeBegin);
		return imptimeBegin;
	}
/**
 * 返回当前月的第一天 
 * @param date20120103
 * @return 20120101
 */
	public static String getCurrentMonthFirstDayByDate(String date) {
		int year = Integer.parseInt(date.substring(0,4));
		int month = Integer.parseInt(date.substring(4,6));
		int day = Integer.parseInt(date.substring(6));
		Calendar calendar = Calendar.getInstance();
		calendar.set(year, month-1, 1);
		Date newdate = calendar.getTime();
		SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); 
	    Calendar cal = Calendar.getInstance();
	    cal.setTime(newdate);
	    String imptimeBegin = sdf.format(cal.getTime());
		return imptimeBegin;
	}
	
}


android 工具类 DateUtil,布布扣,bubuko.com

android 工具类 DateUtil

原文:http://blog.csdn.net/xuduzhoud/article/details/27526177

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!