zoukankan      html  css  js  c++  java
  • android 工具类 DateUtil

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


    /**
     * 日期操作工具类.
     * 
     * @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;
    	}
    	
    }


  • 相关阅读:
    如何把新加的分区挂载到指定目录下
    怎样通过U盘安装启动Centos6.8
    Redis 单机安装【一】
    Linux漏洞扫描工具【lynis】
    mysql 主从 重新同步
    Centos 6.8下安装oracle10g数据库、
    监控服务supervisor服务的安装及使用
    制作c#桌面应用程序 安装程序 卸载程序
    Microsoft Visual SourceSafe 2005 服务端安装配置过程以及出现的问题,以及解决方法!
    .NET中的CSV导入导出
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/5091557.html
Copyright © 2011-2022 走看看