日期时间处理工具类

it2022-05-05  276

开发中遇到,总结一下。

import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateUtil { public static final String SDF_DT_23 = "yyyy-MM-dd HH:mm:ss.SSS"; public static final String SDF_DT_17 = "yyyyMMddHHmmssSSS"; public static final String SDF_DT_19 = "yyyy-MM-dd HH:mm:ss"; public static final String SDF_DT_14 = "yyyyMMddHHmmss"; public static final String SDF_D_10 = "yyyy-MM-dd"; public static final String SDF_D_8 = "yyyyMMdd"; public static final String SDF_T_12 = "HH:mm:ss.SSS"; public static final String SDF_T_9 = "HHmmssSSS"; public static final String SDF_T_8 = "HH:mm:ss"; public static final String SDF_T_6 = "HHmmss"; public static final String SDF_DT_CHN = "yyyy年MM月dd日HH时mm分ss秒"; /** * 获取当前系统日期,并以所传类型将日期/时间转换为指定格式的字符串 * * @param formatType 格式化日期类型 * @return */ public static String getNowDateTime(String formatType){ return getDateTimeFormat(new Date(), formatType); } /** * 根据所传类型,将日期/时间转换为指定格式的字符串 * * @param date 日期/时间 * @param formatType 格式化日期类型 * @return */ public static String getDateTimeFormat(Date date, String formatType) { checkFormatType(formatType); DateFormat df = new SimpleDateFormat(formatType); return df.format(date); } /** * 将日期/时间转换为指定格式(yyyyMMddHHmmss)的字符串 * * @param date 日期/时间 * @return */ public static String getDateTime(Date date) { DateFormat df = new SimpleDateFormat(SDF_DT_14); return df.format(date); } /** * 将日期/时间转换为指定格式(HHmmss)的字符串 * * @param date 日期/时间 * @return */ public static String getTime(Date date){ DateFormat df = new SimpleDateFormat("SDF_T_6"); return df.format(date); } /** * 根据所传类型,将字符串转换为指定格式的Date * * @param dateStr 日期/时间串 * @param formtType 格式化日期类型 * @return */ public static Date getDateByFormatStr(String dateStr, String formatType){ try { DateFormat df = new SimpleDateFormat(formatType); checkFormatType(formatType); return df.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * 不同格式间互相装换 * * @param dateStr 原日期/时间串 * @param preFormatType 原格式类型 * @param proFormatType 目标格式类型 * @return */ public static String formatConvert(String dateStr, String preFormatType, String proFormatType) { String returnStr = null; try { checkFormatType(preFormatType, proFormatType); Date preDate = new SimpleDateFormat(preFormatType).parse(dateStr); returnStr = new SimpleDateFormat(proFormatType).format(preDate); } catch (ParseException e) { e.printStackTrace(); } return returnStr; } /** * 日期加减运算 * * @param dateStr 操作日期 * @param diff 差值 * @param formatType 日期/时间格式类型 * @return */ public static String dateOperation(String dateStr, String diff, String formatType){ Calendar c = Calendar.getInstance(); c.setTime(getDateByFormatStr(dateStr, formatType)); c.add(Calendar.DATE, Integer.parseInt(diff)); return getDateTimeFormat(c.getTime(), formatType); } /** * 校验格式化类型是否正确 * * @param formatType 格式化类型 * @return */ public static boolean checkFormatType(String... formatType) { try { for (String type:formatType){ if(!(SDF_DT_23.equals(type) || SDF_DT_17.equals(type) || SDF_DT_19.equals(type) || SDF_DT_14.equals(type) || SDF_D_10.equals(type) || SDF_D_8.equals(type) || SDF_T_12.equals(type) || SDF_T_12.equals(type) || SDF_T_8.equals(type) || SDF_T_6.equals(type) || SDF_DT_CHN.equals(type))){ throw new Exception("所传"+ type +"格式化类型不正确,具体格式可参照DateUtil类!"); } } } catch (Exception e) { e.printStackTrace(); } return true; } /** * test * @param args */ public static void main(String args[]){ String nowDate = getNowDateTime(DateUtil.SDF_DT_23); System.out.println(nowDate); String date = dateOperation(nowDate, "-4", DateUtil.SDF_DT_23); System.out.println(date); String covertdate = DateUtil.formatConvert(nowDate, DateUtil.SDF_DT_23, DateUtil.SDF_T_6); System.out.println(covertdate); } }

 

备注:1.SimpleDateFormat中的parse方法可以把String型的字符串转换成特定格式的date类型;

           2.SimpleDateFormat中的format方法可以把Date型的字符串转换成特定格式的String类型。


最新回复(0)