当前位置: 代码迷 >> 综合 >> android 工具类 DateUtil
  详细解决方案

android 工具类 DateUtil

热度:67   发布时间:2023-12-13 00:41:10.0
转自: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;
 }
 
}
  相关解决方案