一、将日期格式化为指定的字符串.
/**
* @param d 日期.
* @param format 输出字符串格式.
* @return 日期字符串
*/
public static String getStringFromDate(Date d, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(d);
}
二、格式字符串转为日期
/**
* @param s 字符串内容.
* @return 日期
*/
public static Date getDateFromString(String s) {
return getDateFromString(s, FORMAT_DATE);
}
/**
* @param s 字符串内容.
* @param format 字符串格式.
* @return 日期
*/
public static Date getDateFromString(String s, String format) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.parse(s);
} catch (Exception e) {
return null;
}
}
三、、得到与当前日期相差指定天数的日期字符串
/**
* @param days 前后的天数,正值为后, 负值为前.
* @return 日期字符串
*/
private static final String FORMAT_DATE = "yyyy-MM-dd";
public static String getCertainDate(int days) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, days);
return getStringFromDate(calendar.getTime(), FORMAT_DATE);
}
四、得到与指定日期相差指定天数的日期字符串
/**
* @param dateString 指定的日期.
* @param days 前后的天数,正值为后, 负值为前.
* @return 日期字符串
*/
public static String getCertainDate(String dateString, int days) {
Calendar calendar = getCalendar(dateString);
calendar.add(Calendar.DATE, days);
return getStringFromDate(calendar.getTime(), FORMAT_DATE);
}
五、得到与指定日期相差指定天数的日期字符串
/**
* @param dateString 指定的日期.
* @param period 前后的天数,正值为后, 负值为前.
* @param periodType 周期类别 可以是天、月、年.
* @return 日期字符串
*/
public static String getCertainDate(String dateString, int period, int periodType) {
Calendar calendar = getCalendar(dateString);
switch (periodType) {
case 1: // 天
calendar.add(Calendar.DATE, period);
break;
case 2: // 月
calendar.add(Calendar.MONTH, period);
break;
case 3: // 年
calendar.add(Calendar.MONTH, period * 12);
break;
default:
}
return getStringFromDate(calendar.getTime(), FORMAT_DATE);
}
六、某日期(带时间)加上几天得到另外一个日期(带时间)
/**
* @param datetime 需要调整的日期(带时间).
* @param days 调整天数.
* @return 调整后的日期(带时间)
*/
private static final String FORMAT_DATETIME = "yyyy-MM-dd HH:mm:ss";
public static String getCertainDatetime(String datetime, int days) {
Date curDate = getDateFromString(datetime, FORMAT_DATETIME);
Calendar calendar = Calendar.getInstance();
calendar.setTime(curDate);
calendar.add(Calendar.DATE, days);
return getStringFromDate(calendar.getTime(), FORMAT_DATETIME);
}
七、得到与当前日期相差指定月数的日期字符串.
/**
* @param dif 前后的月数,正值为后, 负值为前.
* @return 日期字符串
*/
public static String getCertainMonth(int dif) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, dif);
return getStringFromDate(calendar.getTime(), FORMAT_DATE);
}
/**
* @param dif 前后的月数,正值为后, 负值为前.
* @param format 格式
* @return 日期字符串
*/
public static String getCertainMonth(int dif, String format) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, dif);
return getStringFromDate(calendar.getTime(), format);
}
八、取得两日期间的月份差数
public static int getMonthDiff(String startDate, String endDate) {
String[] startArray = startDate.split("-");
String[] endArray = endDate.split("-");
int startYear = Integer.parseInt(startArray[0]);
int startMonth = Integer.parseInt(startArray[1]);
int endYear = Integer.parseInt(endArray[0]);
int endMonth = Integer.parseInt(endArray[1]);
return Math.abs((endYear - startYear) * 12 + endMonth - startMonth);
}
九、某日期加上几天得到另外一个日期
/**
* @param addNum 要增加的天数.
* @param getDate 某日期.
* @return 与某日期相差addNum天的日期
*/
public static String getDateAdded(int addNum, String getDate) {
return getCertainDate(getDate, addNum);
}