zoukankan      html  css  js  c++  java
  • Android工具类 DateUtil,可以用它方便的进行日期的操作

    本文转载自:http://blog.csdn.net/xuduzhoud/article/details/27526177

    全部代码如下:

    DateUtil.java

    package com.example.tset;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    /**
     * 日期操作工具类.
     * 
     * @author shimiso
     * http://blog.csdn.net/xuduzhoud/article/details/27526177
     */
     
    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 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;
        }
         
    }
  • 相关阅读:
    Windows、Linux、ARM、Android、iOS全平台支持的RTMP推流组件EasyRTMPAndroid如何修改分辨率和码率
    高稳定性、低延时的网络全终端播放器H5播放器网页直播/点播播放器EasyPlayer.js播放flv格式视频显示跨域问题解决方案
    RTSP播放器网页web无插件直播流媒体音视频播放器EasyPlayerRTSP实现支持H265编码格式过程介绍
    简单、高效、易用的全平台(Windows/Linux/ARM/Android/iOS)web实现RTMP推送组件EasyRTMPAndroid如何开启悬浮窗
    模板学习实践一 accumulationtraits
    模板学习实践二 pointer
    黑客屏保 代码来自网络搜索 做了部分改动
    设计模式之模板模式 template
    CMAKE 教程前两章节学习
    cmake 及make 实践记录
  • 原文地址:https://www.cnblogs.com/tianzhijiexian/p/3889845.html
Copyright © 2011-2022 走看看