項(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;
}
}