public class DateUtil {
public enum DateType {
YEAR, MONTH, DAY, HH, MI, SS, YYYY_MM_DD, YYYYMMDD
}
/**
* 将精确到秒的字符串转换为日期类型
*
* 字符串格式需要为yyyy-MM-dd hh:mm:ss
*
* @param date
* 将精确到秒的字符串
* @return Timestamp对象
* @throws RuntimeException
* 日期类型转换错误
*/
public static Date string2Timestamp(String date) {
SimpleDateFormat clsFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try {
clsFormat.parse(date);
return new Timestamp(clsFormat.parse(date).getTime());
} catch (ParseException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* 将精确到秒的字符串转换为日期类型
*
* 字符串格式需要为yyyy-MM-dd hh:mm:ss
*
* @param date
* 将精确到秒的字符串
* @return Timestamp对象
* @throws RuntimeException
* 日期类型转换错误
*/
public static Timestamp str2Timestamp(String date, String pattern) {
SimpleDateFormat clsFormat = new SimpleDateFormat(pattern);
try {
clsFormat.parse(date);
return new Timestamp(clsFormat.parse(date).getTime());
} catch (ParseException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* 将精确到天的字符串转换为日期类型
*
* 字符串格式需要为yyyy-MM-dd
*
* @param date
* 将精确到天的字符串
* @return java.sql.Date对象
* @throws ParseException
* @throws RuntimeException
* 日期类型转换错误
*/
public static java.sql.Date string2Date(String date) {
SimpleDateFormat clsFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
if(date==""||"".equals(date)){
return null;
}else{
return new java.sql.Date(clsFormat.parse(date).getTime());
}
} catch (ParseException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* 将日期类型字符串转换为日期类型
*
*
* @param date 日期类型字符串
* @return java.sql.Date对象
* @throws ParseException
* @throws RuntimeException
* 日期类型转换错误
*/
public static java.sql.Date string2Date(Object date) {
if (date instanceof java.util.Date)
return new java.sql.Date(((java.util.Date) date).getTime());
String strDate = date.toString();
if (StringUtil.isNull(strDate) || (strDate.length() < 5))
throw new RuntimeException("非日期类型");
String dateSpace = "";
if (strDate.contains("-") || strDate.contains("/")) {
dateSpace = String.valueOf(strDate.charAt(4));
}
String format[];
if (!StringUtil.isNull(dateSpace)) {
format = new String[6];
format[0] = "yyyy" + dateSpace + "MM" + dateSpace + "dd";
format[1] = "yyyy" + dateSpace + "MM";
format[2] = "yyyy" + dateSpace + "MM" + dateSpace + "d";
format[3] = "yyyy" + dateSpace + "M" + dateSpace + "dd";
format[4] = "yyyy" + dateSpace + "M" + dateSpace + "d";
format[5] = "yyyy" + dateSpace + "M";
} else {
format = new String[5];
format[0] = "yyyyMMdd";
format[1] = "yyyyMM";
format[2] = "yyyyMdd";
format[3] = "yyyyMd";
format[4] = "yyyyM";
}
SimpleDateFormat formatter;
String aFormat = "", tmp = "";
;
Date frmDate = null;
for (int i = 0; i < format.length; i++) {
aFormat = format[i];
formatter = new SimpleDateFormat(aFormat);
formatter.setLenient(false);
try {
frmDate = formatter.parse(strDate);
tmp = formatter.format(frmDate);
} catch (ParseException e) {
}
if (strDate.equals(tmp)) {
return new java.sql.Date(frmDate.getTime());
}
}
throw new RuntimeException("非日期类型");
}
/**
* 将精确到月的字符串转换为日期类型
*
* 字符串格式需要为yyyy-MM
*
* @param date
* 将精确到月的字符串
* @return java.sql.Date对象
* @throws ParseException
* @throws RuntimeException
* 日期类型转换错误
*/
public static java.sql.Date string4Date(String date) {
SimpleDateFormat clsFormat = new SimpleDateFormat("yyyy-MM");
try {
if(date==""||"".equals(date)){
return null;
}else{
return new java.sql.Date(clsFormat.parse(date).getTime());
}
} catch (ParseException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* 将精确到天的字符串转换为日期类型
*
* 字符串格式需要为yyyy-MM-dd HH:mm
*
* @param date
* 将精确到分钟的的字符串
* @return java.util.Date对象
* @throws ParseException
* @throws RuntimeException
* 日期类型转换错误
*/
public static java.util.Date string3Date(String date) {
SimpleDateFormat clsFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
if(date==""||"".equals(date)){
return null;
}else{
return clsFormat.parse(date);
}
} catch (ParseException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* 将字符型时间转换为Time型
*
* 字符串格式需要为HH:mm:ss
*
* @param date
* 将精确到天的字符串
* @return Timestamp对象
* @throws ParseException
* @throws RuntimeException
* 日期类型转换错误
*/
public static java.sql.Time string2Time(String time) {
SimpleDateFormat clsFormat = new SimpleDateFormat("HH:mm:ss");
try {
return new java.sql.Time(clsFormat.parse(time).getTime());
} catch (ParseException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
// 将精确到天的字符串对象转换为日期类型
public static java.sql.Date object2Date(Object date) {
return string2Date((String) date);
}
/**
* 将字符串转为指定格式的日期
*
* 日期字符串与字符串格式需要匹配
*
* @param date
* 日期字符串
* @param frm
* 字符串格式
* @return Timestamp对象
* @throws ParseException
* @throws RuntimeException
* 日期类型转换错误
*/
public static java.sql.Date string2Date(String date, String frm) {
SimpleDateFormat clsFormat = new SimpleDateFormat(frm);
try {
clsFormat.parse(date);
return new java.sql.Date(clsFormat.parse(date).getTime());
} catch (ParseException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* 将日期类型转换为精确到天的字符串
*
* 字符串格式为yyyy-MM-dd
*
* @param date
* 日期类型
* @return String 日期
*
*/
public static String date2String(Date date) {
SimpleDateFormat clsFormat = new SimpleDateFormat("yyyy-MM-dd");
return clsFormat.format(date);
}
/**
* 将日期类型转换为指定格式的字符串
*
*
* @param date
* 日期类型
* @param frm
* 需要转换的格式,具体格式参加java说明
* @return String 日期
*
*/
public static String date2String(Date date, String frm) {
SimpleDateFormat clsFormat = new SimpleDateFormat(frm);
return clsFormat.format(date);
}
/**
* 将日期类型转换为指定格式的日期类型
* @param date
* 日期类型
* @param frm
* 需要转换的格式,具体格式参加java说明
* @return Date
* @description:
*/
public static java.sql.Date date2date(Date date,String frm){
return string2Date(date2String(date), frm);
}
/**
* 将日期类型转换为yyyy-MM-dd格式的日期类型
* @param date
* 日期类型
* @return Date
* @description:
*/
public static java.sql.Date date2date(Date date){
return string2Date(date2String(date));
}
}