[java][代码]DateUtil用于处理日期和时间
代码是一个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;}
}