包括有
1、Date类型转String类型
2、String类型转Date类型
3、获取系统当前时间
4、把String类型的时间转为指定时间格式的String数据
5、获得指定时间后几分钟的时间字符串
6、获得指定时间前几分钟的时间字符串
7、国际标准时间CST 转yyyyMMddHHmmss格式的时间字符串
处理这些操作的类:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class DateUtil {
public static final String PATTERN_STANDARD08W = "yyyyMMdd";
public static final String PATTERN_STANDARD12W = "yyyyMMddHHmm";
public static final String PATTERN_STANDARD14W = "yyyyMMddHHmmss";
public static final String PATTERN_STANDARD17W = "yyyyMMddHHmmssSSS";
public static final String PATTERN_STANDARD10H = "yyyy-MM-dd";
public static final String PATTERN_STANDARD16H = "yyyy-MM-dd HH:mm";
public static final String PATTERN_STANDARD19H = "yyyy-MM-dd HH:mm:ss";
public static final String PATTERN_STANDARD10X = "yyyy/MM/dd";
public static final String PATTERN_STANDARD16X = "yyyy/MM/dd HH:mm";
public static final String PATTERN_STANDARD19X = "yyyy/MM/dd HH:mm:ss";
//Date格式转String格式
public static String date2String(Date date, String pattern) {
if (date == null) {
throw new java.lang.IllegalArgumentException("timestamp null illegal");
}
pattern = (pattern == null || pattern.equals(""))?PATTERN_STANDARD19H:pattern;
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(date);
}
//String格式转Date格式
public static Date string2Date(String strDate, String pattern) {
if (strDate == null || strDate.equals("")) {
throw new RuntimeException("strDate is null");
}
pattern = (pattern == null || pattern.equals(""))?PATTERN_STANDARD19H:pattern;
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
Date date = null;
try {
date = sdf.parse(strDate);
} catch (Exception e) {
throw new RuntimeException(e);
}
return date;
}
//获取系统当前时间
public static String getCurrentTime(String format) {
SimpleDateFormat formatDate = new SimpleDateFormat(format);
String date = formatDate.format(new Date());
return date;
}
//转时间格式(国际标准时间要先用CSTtofulldateString转)
public static String getWantDate(String dateStr,String wantFormat){
if(!"".equals(dateStr)&&dateStr!=null){
String pattern = PATTERN_STANDARD14W;
int len = dateStr.length();
switch(len){
case 8:pattern = PATTERN_STANDARD08W;break;
case 12:pattern = PATTERN_STANDARD12W;break;
case 14:pattern = PATTERN_STANDARD14W;break;
case 17:pattern = PATTERN_STANDARD17W;break;
case 10:pattern = (dateStr.contains("-"))?PATTERN_STANDARD10H:PATTERN_STANDARD10X;break;
case 16:pattern = (dateStr.contains("-"))?PATTERN_STANDARD16H:PATTERN_STANDARD16X;break;
case 19:pattern = (dateStr.contains("-"))?PATTERN_STANDARD19H:PATTERN_STANDARD19X;break;
default:pattern = PATTERN_STANDARD14W;break;
}
SimpleDateFormat sdf = new SimpleDateFormat(wantFormat);
try {
SimpleDateFormat sdfStr = new SimpleDateFormat(pattern);
Date date = sdfStr.parse(dateStr);
dateStr = sdf.format(date);
} catch (Exception e) {
e.printStackTrace();
}
}
return dateStr;
}
//获取输入时间的的几分钟后的时间字符串
public static String getAfterTime(String dateStr,int minute){
String returnStr = "";
try {
String pattern = PATTERN_STANDARD14W;
int len = dateStr.length();
switch(len){
case 8:pattern = PATTERN_STANDARD08W;break;
case 10:pattern = PATTERN_STANDARD10H;break;
case 12:pattern = PATTERN_STANDARD12W;break;
case 14:pattern = PATTERN_STANDARD14W;break;
case 16:pattern = PATTERN_STANDARD16H;break;
case 17:pattern = PATTERN_STANDARD17W;break;
case 19:pattern = PATTERN_STANDARD19H;break;
default:pattern = PATTERN_STANDARD14W;break;
}
SimpleDateFormat formatDate = new SimpleDateFormat(pattern);
Date date = null;
date = formatDate.parse(dateStr);
Date afterDate = new Date(date.getTime()+(60000*minute));
returnStr = formatDate.format(afterDate);
} catch (Exception e) {
returnStr = dateStr;
e.printStackTrace();
}
return returnStr;
}
//获取输入时间的的几分钟前的时间字符串
public static String getBeforeTime(String dateStr,int minute){
String returnStr = "";
try {
String pattern = PATTERN_STANDARD14W;
int len = dateStr.length();
switch(len){
case 8:pattern = PATTERN_STANDARD08W;break;
case 10:pattern = PATTERN_STANDARD10H;break;
case 12:pattern = PATTERN_STANDARD12W;break;
case 14:pattern = PATTERN_STANDARD14W;break;
case 16:pattern = PATTERN_STANDARD16H;break;
case 17:pattern = PATTERN_STANDARD17W;break;
case 19:pattern = PATTERN_STANDARD19H;break;
default:pattern = PATTERN_STANDARD14W;break;
}
SimpleDateFormat formatDate = new SimpleDateFormat(pattern);
Date date = null;
date = formatDate.parse(dateStr);
Date afterDate = new Date(date.getTime()-(60000*minute));
returnStr = formatDate.format(afterDate);
} catch (Exception e) {
returnStr = dateStr;
e.printStackTrace();
}
return returnStr;
}
//CST 国际标准时间转yyyyMMddHHmmss格式的时间字符串
public static String CSTtofulldateString(String str) {
String result = "";
try {
String pattern = "EEE MMM dd HH:mm:ss zzz yyyy";
SimpleDateFormat df = new SimpleDateFormat(pattern, Locale.US);
Date date = df.parse(str);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
result = simpleDateFormat.format(date);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
调用方法:
public static void main(String[] args){
String time ="Fri Jan 12 11:18:20 CST 2018";
String wanttime = "";
String CSTtofulldate = CSTtofulldateString(time);
String DateBefore = "";
String DateAfter = "";
System.out.println("CSTtoDate:"+CSTtofulldate);
wanttime = DateUtil.getWantDate(CSTtofulldate, "yyyyMMddHHmm");
System.out.println("want:"+wanttime);
DateBefore = DateUtil.getBeforeTime(CSTtofulldate, 5);
System.out.println("Before:"+DateBefore);
DateAfter = DateUtil.getAfterTime(CSTtofulldate, 5);
System.out.println("After:"+DateAfter);
}