android 工具类 DateUtil

转自:http://blog.csdn.net/xuduzhoud/article/details/27526177  好东西的留着!!
/**
 * 日期操作工具类.
 * 
 * @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;
  }
  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值