如何快速實(shí)現(xiàn)日期是當(dāng)前日期時(shí)間的后一個(gè)月

項(xiàng)目遇到一個(gè)需求:選擇開(kāi)始時(shí)間,然后結(jié)束時(shí)間默認(rèn)是開(kāi)始時(shí)間的后一個(gè)月,效果如下

GIF.gif
思路分析:

假如開(kāi)始時(shí)間選擇了2017年12月22日,那么結(jié)束時(shí)間就變成了2018年1月22日,要實(shí)現(xiàn)這種效果,我之前還糾結(jié)了一下,最后想到用android中的Calendar來(lái)實(shí)現(xiàn)比較快一點(diǎn)

實(shí)現(xiàn)過(guò)程的核心方法

/**
     * 包含當(dāng)前日期12個(gè)月之后
     * @return
     */
    public static String getCurrent12MonthAfter(String dateType,String dataTime) {
//        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat(dateType, Locale.getDefault( ));
//        String currentTime = sdf.format(date);
        try {
            Date data = sdf.parse(dataTime);
            Calendar rightNow = Calendar.getInstance();
            rightNow.setTime(data);
            if (Calendar.MONTH - 12 != 0) {
                rightNow.add(Calendar.YEAR, 0);// 年份不變
                rightNow.add(Calendar.MONTH, +1);
                Date dataNow = rightNow.getTime();
                String nowCurrentTime = sdf.format(dataNow);
                return nowCurrentTime;
            } else {
                rightNow.add(Calendar.YEAR, +1);//  年份加1
                rightNow.add(Calendar.MONTH, 1);
                Date dataNow = rightNow.getTime();
                String nowCurrentTime = sdf.format(dataNow);
                return nowCurrentTime;
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return "";
    }

最后附上項(xiàng)目中用的完整的日期工具類

public class TimeUtils {
    
    public static String getCurrentTime() {
        return getCurrentTime("yyyy-MM-dd  HH:mm:ss");
    }
    
    public static String getCurrentTime2() {
        return getCurrentTime("yyyyMMddHHmmss");
    }

    public static String getCurrentTime3() {
        return getCurrentTime("yyyyMMdd");
    }

    
    public static String getCurrentTime(String format) {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault());
        String currentTime = sdf.format(date);
        return currentTime;
    }
    
    public static String getDate(){
        SimpleDateFormat    sDateFormat    =   new    SimpleDateFormat("yyyy-MM-dd");
        return sDateFormat.format(new    java.util.Date()); 
    }

    /**
     * 包含當(dāng)前日期12個(gè)月之后
     * @return
     */
    public static String getCurrent12MonthAfter(String dateType,String dataTime) {
//        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat(dateType, Locale.getDefault( ));
//        String currentTime = sdf.format(date);
        try {
            Date data = sdf.parse(dataTime);
            Calendar rightNow = Calendar.getInstance();
            rightNow.setTime(data);
            if (Calendar.MONTH - 12 != 0) {
                rightNow.add(Calendar.YEAR, 0);// 年份不變
                rightNow.add(Calendar.MONTH, +1);
                Date dataNow = rightNow.getTime();
                String nowCurrentTime = sdf.format(dataNow);
                return nowCurrentTime;
            } else {
                rightNow.add(Calendar.YEAR, +1);//  年份加1
                rightNow.add(Calendar.MONTH, 1);
                Date dataNow = rightNow.getTime();
                String nowCurrentTime = sdf.format(dataNow);
                return nowCurrentTime;
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return "";
    }


    /**
     * 將string  19910924   --》  1991-09-24
     * @param date
     * @return
     */
    public static String getFormatDate(String date){
        StringBuilder sb = new StringBuilder();
        sb.append(date.substring(0,4));
        sb.append("-");
        sb.append(date.substring(4,6));
        sb.append("-");
        sb.append(date.substring(6,8));
        return sb.toString();
    }

    /**
     * startDate    格式 yyyy-MM-dd
     * currentDate   格式 yyyy-MM-dd
     * 比較日期的方法:開(kāi)始時(shí)間與當(dāng)前時(shí)間比較,小于當(dāng)前時(shí)間的話,不能下一步
     * @return
     */
    public boolean compareDate(String startDate,String currentDate){
        ArrayList<String> mStartDateArr = getYearMonthDate(startDate);
        ArrayList<String> mCurrentDateArr = getYearMonthDate(currentDate);
        if (mStartDateArr == null ||  mStartDateArr.size() <= 0){
            return false;
        }
        if (mCurrentDateArr == null ||  mCurrentDateArr.size() <= 0){
            return false;
        }
        int mYearNum = Integer.valueOf(mStartDateArr.get(0));
        int mMonthNum = Integer.valueOf(mStartDateArr.get(1));
        int mDayNum = Integer.valueOf(mStartDateArr.get(2));
        int mCurrentYearNum = Integer.valueOf(mCurrentDateArr.get(0));
        int mCurrentMonthNum = Integer.valueOf(mCurrentDateArr.get(1));
        int mCurrentDayNum = Integer.valueOf(mCurrentDateArr.get(2));
        if (mYearNum < mCurrentYearNum){
            return false;
        }

        if (mYearNum == mCurrentYearNum && mMonthNum < mCurrentMonthNum){
            return false;
        }

        if (mYearNum == mCurrentYearNum && mMonthNum == mCurrentMonthNum && mDayNum < mCurrentDayNum){
            return false;
        }

        return true;
    }

    /**
     * 根據(jù)日期獲取年月日的方法
     * @param date
     * @return
     */
    private ArrayList<String> getYearMonthDate(String date){
        ArrayList<String> mDateList = new ArrayList<String>();
        mDateList.clear();
        String  separators = "-";
        if (TextUtils.isEmpty(date)){
            return null;
        }
        String[] split = date.split(separators);
        mDateList.add(split[0]);
        mDateList.add(split[1]);
        mDateList.add(split[2]);
        return mDateList;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,036評(píng)論 25 709
  • 墨Ly閱讀 253評(píng)論 1 4
  • 午夜夢(mèng)回時(shí)總有絲絲縷縷的情愫一直縈繞在心底久久未曾遠(yuǎn)離,很想寫(xiě)一段文字,來(lái)憑吊一些久違的感動(dòng),所以和著音樂(lè),...
    秀麗有約閱讀 476評(píng)論 1 2
  • 《親愛(ài)的生活》是2012年出版的,“當(dāng)代短篇小說(shuō)大師”艾麗斯門(mén)羅的收官之作。寫(xiě)作40余年,門(mén)羅載譽(yù)無(wú)數(shù),為同時(shí)代的...
    熱愛(ài)一生閱讀 2,238評(píng)論 31 41
  • 讀《人類簡(jiǎn)史》是因?yàn)楹?jiǎn)書(shū)里看到別人的推薦。 我是一個(gè)懶惰的人,告訴自己要做一個(gè)有目標(biāo)的人,確定了目標(biāo)后卻總疏于實(shí)踐...
    _九月閱讀 6,906評(píng)論 0 1

友情鏈接更多精彩內(nèi)容