android 工具類 DateUtil

來源:互聯網
上載者:User

標籤:java   日期處理   date   android   

提取了一些在開發過程中可能會用到的日期相關的函數作為工具類,供大家參考:


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


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.