一、将指定格式的日期字符串格式化为日期
/**
* @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 d 日期.
* @param format 输出字符串格式.
* @return 日期字符串
*/
public static String getStringFromDate(Date d, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(d);
}
三、得到当前的日期字符串
/**
* @return 日期字符串
*/
public static String getDate() {
return getDate(Calendar.getInstance());
}
/**
* @param calendar 指定的日期.
* @return 日期字符串
*/
public static String getDate(Calendar calendar) {
return getStringFromDate(calendar.getTime(), FORMAT_DATE);
}
四、得到当前的日期时间字符串
/**
* @return 日期时间字符串
*/
private static final String FORMAT_DATETIME = "yyyy-MM-dd HH:mm:ss";
public static String getDatetime() {
Calendar calendar = Calendar.getInstance();
return getStringFromDate(calendar.getTime(), FORMAT_DATETIME);
}
三、获取相差时间,精确到分钟.
/**
* @param beginTime 开始时间.
* @param endTime 结束时间.
* @return 相差时间
*/
private static final String FORMAT_DATETIME = "yyyy-MM-dd HH:mm:ss";
public static String getDiffTime(String beginTime, String endTime) {
try {
if (endTime == null || endTime.length() == 0) {
endTime = getDatetime();
}
Date eTime = getDateFromString(endTime, FORMAT_DATETIME);
Date bTime = getDateFromString(beginTime, FORMAT_DATETIME);
long time = eTime.getTime() - bTime.getTime();
StringBuffer sb = new StringBuffer();
int day = (int) Math.floor(time / (24 * 3600000));
if (day > 0) {
sb.append(day).append("天");
}
time = time % (24 * 3600000);
int hour = Cast.to(Math.floor(time / 3600000), 0);
if (hour > 0) {
sb.append(hour).append("小时");
}
time = time % 3600000;
int minute = Cast.to(Math.ceil(time / 60000), 0);
if (minute > 0) {
sb.append(minute).append("分钟");
}
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
四、当得到两个日期相差天数
/**
* 当前日期与参数传递的日期的相差天数.<br>
* <br>
* @param dateinfo 指定的日期.
* @return 相差的天数
*/
public static int selectDateDiff(String dateinfo) {
return selectDateDiff(dateinfo, getDate());
}
/**
* 当得到两个日期相差天数.<br>
* <br>
* @param first 第一个日期.
* @param second 第二个日期.
* @return 相差的天数
*/
public static int selectDateDiff(String first, String second) {
int dif = 0;
try {
Date fDate = getDateFromString(first, FORMAT_DATE);
Date sDate = getDateFromString(second, FORMAT_DATE);
dif = (int) ((fDate.getTime() - sDate.getTime()) / 86400000);
} catch (Exception e) {
dif = 0;
}
return dif;
}
五、相差的小时数
import java.math.BigDecimal;
public static double getDiffHoure(String beginTime, String endTime) {
double dif = 0.00;
try {
Date eDatetime = DateUtils.getDateFromString(endTime,
"yyyy-MM-dd HH:mm:ss");
Date bDatetime = DateUtils.getDateFromString(beginTime,
"yyyy-MM-dd HH:mm:ss");
double ed = eDatetime.getTime();
double sd = bDatetime.getTime();
BigDecimal et = new BigDecimal(ed / 1000 / 3600 - sd / 1000 / 3600);
dif = et.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
} catch (Exception e) {
dif = 0;
}
return dif;
}
六、获取相差的秒数
/**
* @param beginTime 开始时间
* @param periodSecond 相差秒数
* @return
*/
public static String getSecondTime(String beginTime, int periodSecond) {
String dif = "";
try {
Date bTime = DateUtils.getDateFromString(beginTime,
"yyyy-MM-dd HH:mm:ss");
double bt = bTime.getTime();
bt = bt + periodSecond;
Date dt = getDateFromString(String.valueOf(bt), "yyyy-MM-dd HH:mm:ss");
dif = getStringFromDate(dt, "yyyy-MM-dd HH:mm:ss");
} catch (Exception e) {
dif = "";
}
return dif;
}
七、取得两日期间的月份差数
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);
}