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


/** * 日期操作工具类. *  * @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:ssreturn 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:ssreturn date2Str(d, null);}public static String date2Str(Date d, String format) {// yyyy-MM-dd HH:mm:ssif (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 stubint 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 stubint 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;}}


更多相关文章

  1. Android(安卓)TimeUtil
  2. android 压缩图片、生成缩略图 和转换Base64格式的字符串
  3. Android(安卓)Intent调用 Uri的使用几种格式
  4. Android常用控件-DatePicker以及对话框的两种使用方法
  5. Android选择一段日期
  6. android 根据设置的日期获取星期几
  7. Android(安卓)中 AlertDialog 的多种创建方式(二)
  8. Android(安卓)获取系统日期时间并且不断更新,类似时钟
  9. Android(安卓)- 时间 日期相关组件

随机推荐

  1. nginx的四层转发功能
  2. nginx负载均衡搭建phpmyadmin加入redis了
  3. 威力增强版-OpenShift4的SDN :让我们重新
  4. 2021最佳创新边缘解决方案——摩杜云!
  5. Nginx动静分离
  6. Pycharm最高效的快捷键集合
  7. 容器调度策略:让我们重新认识OpenShift系
  8. 让我们重新认识OpenShift系列1
  9. 用urllib库几行代码实现最简单爬虫
  10. Anaconda-用conda创建python虚拟环境