格式化时间工具类,对 apache 提供的 FaseDateFormat 工具做了封装,使用更方便 :
支持的日期常量:
package com.test;
/**
* 日期常量定义
*
* @author Demon-HY
*/
public class DateConstants {
/**
* 2018-12
*/
public final static String yyyyMM = \"yyyy-MM\";
/**
* 201812
*/
public final static String yyyyMM_ = \"yyyyMM\";
/**
* 2018-12-12
*/
public final static String yyyyMMdd = \"yyyy-MM-dd\";
/**
* 20181212
*/
public final static String yyyyMMdd_ = \"yyyyMMdd\";
/**
* 2018-12-12 12:12
*/
public final static String yyyyMMddHHmm = \"yyyy-MM-dd HH:mm\";
/**
* 201812121212
*/
public final static String yyyyMMddHHmm_ = \"yyyyMMddHHmm\";
/**
* 2018-12-12 12:12:12
*/
public final static String yyyyMMddHHmmss = \"yyyy-MM-dd HH:mm:ss\";
/**
* 20181212121212
*/
public final static String yyyyMMddHHmmss_ = \"yyyyMMddHHmmss\";
/**
* 2018-12-12 12:12:12:000
*/
public final static String yyyyMMddHHmmssSSS = \"yyyy-MM-dd HH:mm:ss:SSS\";
/**
* 2018-12-12 12:12:12.000
*/
public final static String yyyyMMddHHmmssSSS_D = \"yyyy-MM-dd HH:mm:ss.SSS\";
/**
* 2018-12-12\'T\'12:12:12.000+0800
*/
public final static String yyyyMMddHHmmssSSS_TZ = \"yyyy-MM-dd\'T\'HH:mm:ss.SSSZ\";
/**
* 20181212121212000
*/
public final static String yyyyMMddHHmmssSSS_ = \"yyyyMMddHHmmssSSS\";
}
日期转换器:
package com.test;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.FastDateFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 日期转换器
*
* @author Demon-HY
*/
public class DateConvert {
private final static Map<String, FastDateFormat> regexFormatMap = new HashMap<>();
static {
regexFormatMap.put(\"\\\\d{4}-\\\\d{1,2}\", FastDateFormat.getInstance(DateConstants.yyyyMM));
regexFormatMap.put(\"\\\\d{4}-\\\\d{1,2}-\\\\d{1,2}\", FastDateFormat.getInstance(DateConstants.yyyyMMdd));
regexFormatMap.put(\"\\\\d{4}-\\\\d{1,2}-\\\\d{1,2} \\\\d{1,2}\\\\:\\\\d{1,2}\", FastDateFormat.getInstance(DateConstants.yyyyMMddHHmm));
regexFormatMap.put(\"\\\\d{4}-\\\\d{1,2}-\\\\d{1,2} \\\\d{1,2}\\\\:\\\\d{1,2}\\\\:\\\\d{1,2}\", FastDateFormat.getInstance(DateConstants.yyyyMMddHHmmss));
regexFormatMap.put(\"\\\\d{4}-\\\\d{1,2}-\\\\d{1,2} \\\\d{1,2}\\\\:\\\\d{1,2}\\\\:\\\\d{1,2}:\\\\d{1,3}\", FastDateFormat.getInstance(DateConstants.yyyyMMddHHmmssSSS));
regexFormatMap.put(\"\\\\d{4}-\\\\d{1,2}-\\\\d{1,2} \\\\d{1,2}\\\\:\\\\d{1,2}\\\\:\\\\d{1,2}.\\\\d{1,3}\", FastDateFormat.getInstance(DateConstants.yyyyMMddHHmmssSSS_D));
regexFormatMap.put(\"\\\\d{4}-\\\\d{1,2}-\\\\d{1,2}T\\\\d{1,2}\\\\:\\\\d{1,2}\\\\:\\\\d{1,2}.\\\\d{1,3}Z\", FastDateFormat.getInstance(DateConstants.yyyyMMddHHmmssSSS_TZ));
regexFormatMap.put(\"\\\\d{4}-\\\\d{1,2}-\\\\d{1,2}T\\\\d{1,2}\\\\:\\\\d{1,2}\\\\:\\\\d{1,2}.\\\\d{1,3}\\\\+\\\\d{1,4}\", FastDateFormat.getInstance(DateConstants.yyyyMMddHHmmssSSS_TZ));
}
/**
* 解析时间字符串,支持的格式 {@link DateConstants}
*
* @param source 时间字符串
* @return Date
*/
public static Date parse(String source) {
return parse(source, null);
}
/**
* 解析时间字符串
*
* @param source 时间字符串
* @param dataFormat 时间格式,可以为空
* @return Date
*/
public static Date parse(String source, String dataFormat) {
if (StringUtils.isBlank(source)) {
return null;
}
if (StringUtils.isNotBlank(dataFormat)) {
try {
return FastDateFormat.getInstance(dataFormat).parse(source);
} catch (ParseException e) {
throw new IllegalArgumentException(\"Invalid Parse date value \'\" + source + \"\'\", e);
}
}
for (Map.Entry<String, FastDateFormat> entry : regexFormatMap.entrySet()) {
String regex = entry.getKey();
if (source.matches(regex)) {
try {
return entry.getValue().parse(source);
} catch (ParseException e) {
throw new IllegalArgumentException(\"Invalid Parse date value \'\" + source + \"\'\", e);
}
}
}
throw new IllegalArgumentException(\"Invalid date value \'\" + source + \"\'\");
}
/**
* 格式化时间
*
* @param date 时间
* @param dataFormat 时间格式
* @return 格式化后的时间
*/
public static String format(Date date, String dataFormat) {
return FastDateFormat.getInstance(dataFormat).format(date);
}
}
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。



