代码是一个Java工具类,名为DateUtil
,用于处理日期和时间。它提供了多种日期格式的转换和解析功能。以下是类中定义的一些关键点:
-
日期格式常量:定义了多个
DateFormat
对象,用于不同的日期时间格式,例如yyyy-MM-dd
、yyyy-MM-dd HH:mm:ss
等。 -
格式化方法:提供了多个
formatDate
方法的重载版本,用于将Date
对象或其它日期对象格式化为指定格式的字符串。 -
获取当前时间:
getNowTime
方法允许用户传入一个日期格式字符串,并返回当前日期时间按照该格式的字符串表示。 -
解析方法:提供了
parse2Cal
和parse2Date
方法,用于将字符串解析为GregorianCalendar
或Date
对象。 -
特殊日期解析:
getSwitchDate
和getSwitchDate2
方法用于解析特定格式的日期字符串。 -
日期分隔符常量:
DATE_SEPARATOR
定义了程序中主要使用的日期分隔符,用于解析日期。 -
字符串解析工具:
sToken
是一个StringTokenizer
对象,用于在解析日期时分割字符串。
这个工具类非常实用,因为它封装了日期时间的常见操作,使得在Java程序中处理日期和时间变得更加方便。
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.StringTokenizer;
/**
* @author lixiang
*
* 日期结构化类
*/
public class DateUtil {
public static final DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
public static final DateFormat dfv2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final DateFormat dfv3 = new SimpleDateFormat("yyyy");
public static final DateFormat dfv4 = new SimpleDateFormat("yyMMddHHmmss");
public static final DateFormat dfv5 = new SimpleDateFormat("yyyy/MM/dd HH:mm");
public static final DateFormat dfvcn = new SimpleDateFormat("yyyy年MM月dd日");
public static final DateFormat dfv6 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final DateFormat dfv7 = new SimpleDateFormat("yyyyMMdd");
public static final DateFormat dfv8 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
public static final String formatDate(Date date) {
return df.format(date);
}
public static final String formatDate(Object date) {
return df.format(date);
}
public static final String formatDateV2(Date date) {
return dfv2.format(date);
}
public static final String formatDateV2(Object date) {
return dfv2.format(date);
}
public static final String formatDateOnlyYear(Date date) {
return dfv3.format(date);
}
public static final String formatDateOnlyYear(Object date) {
return dfv3.format(date);
}
public static final String formatDateV4(Date date) {
return dfv4.format(date);
}
public static final String formatDateV4(Object date) {
return dfv4.format(date);
}
public static final String formatDateEncodeCN(Date date) {
return dfvcn.format(date);
}
public static final String formatDateEncodeCN(Object date) {
return dfvcn.format(date);
}
public static final String formatDateV5(Date date) {
return dfv5.format(date);
}
public static final String formatDateV5(Object date) {
return dfv5.format(date);
}
public static final String formatDateV6(Date date) {
return dfv6.format(date);
}
public static final String formatDateV6(Object date) {
return dfv6.format(date);
}
public static final String formatDateV7(Date date) {
return dfv7.format(date);
}
public static final String formatDateV7(Object date) {
return dfv7.format(date);
}
public static final String formatDateV8(Date date) {
return dfv8.format(date);
}
public static final String formatDateV8(Object date) {
return dfv8.format(date);
}
public static final String getNowTime(String syntax) {
DateFormat dateFormat = new SimpleDateFormat(syntax);
return dateFormat.format(new Date());
}
public static final SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
public static final SimpleDateFormat sFullFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* 程序中主要的日期分隔符为"-"和"/",且日期序列为“年/月/日”型,其内容缺一不可 例如:09/02/02或2009-02-02
*/
public static final String DATE_SEPARATOR = "-/";
/** 作日期分析之用 */
static StringTokenizer sToken;
/** 将日期变为字符串格式 * */
public static String format(GregorianCalendar pCal) {
return sDateFormat.format(pCal.getTime());
}
public static String format(Date pDate) {
return sDateFormat.format(pDate);
}
public static String fullFormat(Date pDate) {
return sFullFormat.format(pDate);
}
/** 将字符串格式的日期转换为Calender* */
public static GregorianCalendar parse2Cal(String pDateStr) {
sToken = new StringTokenizer(pDateStr, DATE_SEPARATOR);
int vYear = Integer.parseInt(sToken.nextToken());
// GregorianCalendar的月份是从0开始算起的,变态!!
int vMonth = Integer.parseInt(sToken.nextToken()) - 1;
int vDayOfMonth = Integer.parseInt(sToken.nextToken());
return new GregorianCalendar(vYear, vMonth, vDayOfMonth);
}
/** 将字符串类型的日期(yyyy-MM-dd)转换成Date* */
public static Date parse2Date(String pDate) {
try {
return sDateFormat.parse(pDate);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
/**
* 将字符串转换成一个日期
*
* @param startDate
* @return
*/
public static Date getSwitchDate(String startDate) {
Date dt = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
dt = sdf.parse(startDate);
} catch (Exception e) {
e.printStackTrace();
}
return dt;
}
/**
* 将字符串转换成一个日期
*
* @param startDate
* @return
*/
public static Date getSwitchDate2(String startDate) {
Date dt = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
dt = sdf.parse(startDate);
} catch (Exception e) {
e.printStackTrace();
}
return dt;
}
public static Date getSwitchDate3(String startDate) {
Date dt = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
try {
dt = sdf.parse(startDate);
} catch (Exception e) {
e.printStackTrace();
}
return dt;
}
}