import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang3.time.DateFormatUtils;
public class TimeUtil {
/**
* 验证时间字符串格式输入是否正确
* @param timeStr
* @return
*/
public static boolean valiDateTimeWithLongFormat(String timeStr) {
String format = "((19|20)[0-9]{2})-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01]) "
+ "([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]";
Pattern pattern = Pattern.compile(format);
Matcher matcher = pattern.matcher(timeStr);
if (matcher.matches()) {
pattern = Pattern.compile("(\\d{4})-(\\d+)-(\\d+).*");
matcher = pattern.matcher(timeStr);
if (matcher.matches()) {
int y = Integer.valueOf(matcher.group(1));
int m = Integer.valueOf(matcher.group(2));
int d = Integer.valueOf(matcher.group(3));
if (d > 28) {
Calendar c = Calendar.getInstance();
c.set(y, m-1, 1);
int lastDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
return (lastDay >= d);
}
}
return true;
}
return false;
}
/**
* 验证时间字符串格式输入是否正确
* @param timeStr
* @return
*/
public static Date getDateTimeWithLongFormat(String timeStr) {
if(valiDateTimeWithLongFormat(timeStr)) {
String format = "((19|20)[0-9]{2})-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01]) "
+ "([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]";
Pattern pattern = Pattern.compile(format);
Matcher matcher = pattern.matcher(timeStr);
if (matcher.matches()) {
pattern = Pattern.compile("(\\d{4})-(\\d+)-(\\d+) (\\d+):(\\d+):(\\d+)");
matcher = pattern.matcher(timeStr);
if (matcher.matches()) {
int y = Integer.valueOf(matcher.group(1));
int m = Integer.valueOf(matcher.group(2));
int d = Integer.valueOf(matcher.group(3));
int s = Integer.valueOf(matcher.group(4));
int f = Integer.valueOf(matcher.group(5));
int mm = Integer.valueOf(matcher.group(6));
Calendar c = Calendar.getInstance();
c.set(y, m-1, d,s,f,mm);
return c.getTime();
}
}
}
return null;
}
public static void main(String[] args){
/*System.out.println(TimeUtil.valiDateTimeWithLongFormat("2016-5-2 08:02:02"));
System.out.println(TimeUtil.valiDateTimeWithLongFormat("2016-02-29 08:02:02"));
System.out.println(TimeUtil.valiDateTimeWithLongFormat("2015-02-29 08:02:02"));
System.out.println(TimeUtil.valiDateTimeWithLongFormat("2016-02-02 082:02"));*/
Date dateTimeWithLongFormat = TimeUtil.getDateTimeWithLongFormat("2016-5-2 08:02:02");
String format = DateFormatUtils.format(dateTimeWithLongFormat, "yyyy-MM-dd HH:mm:ss");
System.out.println(format);
}
}