package com.util.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class DateUtil {
private static final String[] CHINA_WEEKDAY = {"周日", "周一", "周二", "周三",
"周四", "周五", "周六"};
private static final String CHINA_YYYY_MM_DD = "yyyy年MM月dd日";
private static final String MM_DD_SPLASH = "MM/dd";
private static final int START_YEAR = 1900;
private static final String YYYY_MM_DD = "yyyy-MM-dd";
private static final String YYYY_MM_DD_SPLASH = "yyyy/MM/dd";
private static final String HH_MM_SS = "hh:mm:ss";
/**
* @param time
* hh:mm
* @return hh时mm分
*/
public static String changeHHMMtoChinaHHMM(String time) {
int colonIndex = time.indexOf(":");
String hour = time.substring(0, colonIndex);
String minus = time.substring(colonIndex + 1, time.length());
return hour + "时" + minus + "分";
}
/**
* 将YYYY-MM-DD 转化为 YYYY年MM月DD日
*
* @param yyyymmdd
* YYYY-MM-DD
* @return 可能返回为空
*/
public static String changeYYYYMMDDToChinaYYYYMMDD(String yyyymmdd) {
try {
return formatDateToChinaYYYYMMDD(formatYYYYMMDDToDate(yyyymmdd));
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
/**
* 格式化为Date型
*
* @param date
* YYYY年MM月DD日
*/
public static Date formatChinaYYYYMMDDToDate(String date)
throws ParseException {
return new SimpleDateFormat(CHINA_YYYY_MM_DD, Locale.CHINA).parse(date);
}
/**
* 格式化为"XXXX年XX月XX日"
*/
public static String formatDateToChinaYYYYMMDD(Date date) {
return getYear(date) + "年" + (date.getMonth() + 1) + "月"
+ date.getDate() + "日";
}
/**
* 格式化为"XX月XX日"
*/
public static String formatDateToMMDD(Date date) {
return (date.getMonth() + 1) + "月" + date.getDate() + "日";
}
/**
* 格式化为"mm/dd"
*/
public static String formatDateToMMDDSplash(Date date) {
return new SimpleDateFormat(MM_DD_SPLASH, Locale.CHINA).format(date);
}
/**
* 格式化为"yyyy-mm-dd"
*/
public static String formatDateToYYYYMMDD(Date date) {
return new SimpleDateFormat(YYYY_MM_DD, Locale.CHINA).format(date);
}
/**
* 格式化为"yyyy/mm/dd"
*/
public static String formatDateToYYYYMMDDSplash(Date date) {
return new SimpleDateFormat(YYYY_MM_DD_SPLASH, Locale.CHINA)
.format(date);
}
/**
* 格式化为Date型
*
* @param date
* YYYY-MM-DD
*/
public static Date formatYYYYMMDDToDate(String date) throws ParseException {
return new SimpleDateFormat(YYYY_MM_DD, Locale.CHINA).parse(date);
}
/**
* 将YYYY-MM-DD 格式化为"XX月XX日"
*
* @param date
* @return 可能返回为空
*/
public static String formatYYYYMMDDToMMDD(String date) {
try {
return formatDateToMMDD(formatYYYYMMDDToDate(date));
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
/**
* 获取周几
*
* @param date
* @return 返回值为:未知,周一,周二,周三,周四,周五,周六,周日
*/
public static String getChinaWeekDay(Date date) {
int weekday = getWeekDay(date);
return CHINA_WEEKDAY[weekday];
}
/**
* 获取周几
*
* @param date
* @return 返回值为:未知,周一,周二,周三,周四,周五,周六,周日
*/
public static String getChinaWeekDay(String date) {
int weekday = getWeekDay(date);
return CHINA_WEEKDAY[weekday];
}
/**
* 获取年份
*
* @param date
* yyyy-mm-dd
* @return 返回值为:XXXX年
*/
public static String getChinaYear(String date) {
return getYear(date) + "年";
}
/**
* 获得指定日期的间隔后的日期
*
* @param date
* @param days
* 间隔天数。 >0,表示后面的日期 <0,表示前面的日期
*/
public static Date getDayAfter(Date date, int days) {
Calendar c = Calendar.getInstance();
c.setTime(date);
int day = c.get(Calendar.DATE);
c.set(Calendar.DATE, day + days);
return c.getTime();
}
/**
* 获得指定日期的间隔后的日期
*
* @param date
* yyyy-mm-dd
* @param days
* 间隔天数。 >0,表示后面的日期 <0,表示前面的日期
*/
public static Date getDayAfter(String date, int days) {
try {
return getDayAfter(formatYYYYMMDDToDate(date), days);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
/**
* 获取两个日期之间的天数
*
* @param startDate
* yyyy-mm-dd
* @param endDate
* yyyy-mm-dd
* @return
*/
public static int getDaysBetween(String startDate, String endDate) {
int len = 0;
try {
SimpleDateFormat df = new SimpleDateFormat(YYYY_MM_DD, Locale.CHINA);
java.util.Date cDate;
cDate = df.parse(startDate);
java.util.Date dDate = df.parse(endDate);
long betweenDate = (dDate.getTime() - cDate.getTime())
/ (24 * 60 * 60 * 1000);
len = (int) betweenDate;
} catch (ParseException e) {
e.printStackTrace();
}
return len;
}
/**
* 获取星期几
*
* @param date
* yyyy-mm-dd
* @return 返回值为:1,2,3,4,5,6,7. 出错返回0
*/
public static int getWeekDay(Date date) {
return date.getDay() /* + 1 */;
}
/**
* 获取星期几
*
* @param date
* yyyy-mm-dd
* @return 返回值为:1,2,3,4,5,6,7. 出错返回0
*/
public static int getWeekDay(String date) {
try {
return getWeekDay(formatYYYYMMDDToDate(date));
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
/**
* 获取年份
*
* @param date
* @return XXXX
*/
public static int getYear(Date date) {
return date.getYear() + START_YEAR;
}
/**
* 获取年份
*
* @param date
* yyyy-mm-dd
* @return XXXX
*/
public static int getYear(String date) {
try {
return getYear(formatYYYYMMDDToDate(date));
} catch (ParseException e) {
e.printStackTrace();
}
return START_YEAR;
}
public static String formatDateToYYYYMMDDHHMMSS(Date date) {
return new SimpleDateFormat(YYYY_MM_DD + " " + HH_MM_SS, Locale.CHINA)
.format(date);
}
}
转载于:https://my.oschina.net/u/2273965/blog/368199