java格式化Date 笔记

本文介绍了一种使用Java实现的时间格式化方法,该方法能够处理多种格式的时间字符串,并通过org.apache.commons.lang3.time.DateUtils的parseDate方法进行解析。文章提供了具体的代码实现,包括如何定义长、短时间匹配格式,并通过try-catch块来处理可能出现的异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java格式化Date

对多种格式的时间字符串进行格式化,需求是写一个通用的时间格式化的方法,之前就是按每个格式去匹配,匹配上了就返回,异常就try {} catch (Exception e) {}进行下一次匹配;直到看到了org.apache.commons.lang3.time.DateUtils 的 parseDate 方法;做个笔记
源码为
在这里插入图片描述
按我的理解就是 时间字符串 按 parsePatterns 的格式挨个进行匹配,匹配上了就返回;没有就抛异常;
看源码也确实是一个for循环去匹配
在这里插入图片描述

导包

import org.apache.commons.lang3.time.DateUtils;

代码

public static final String LONG_PARSE_PATTERNS[] = new String[]
		{
		"yyyy-MM-dd HH:mm:ss", 
		"yyyy-M-d h:m:s", 
		"yyyy/MM/dd HH:mm:ss", 
		"yyyy/M/d h:m:s", 
		"yyyyMMddHHmmss", 
		"yyyyMMdd HHmmss"
		};
public static final String SHORT_PARSE_PATTERNS[] = new String[]
		{
		"yyyy-MM-dd", 
		"yyyy-M-d", 
		"yyyy/MM/dd", 
		"yyyy/M/d", 
		"yyyyMMdd"
		};

public static String formatDateString(String dateTime, String valueFormat) {
	return formatDateString(dateTime, valueFormat, LONG_PARSE_PATTERNS, SHORT_PARSE_PATTERNS);
}

/** 
 * @param dateTime            时间字符串
 * @param valueFormat         时间格式化的格式
 * @param longParsePatterns   长时间匹配格式
 * @param shortParsePatterns  短时间匹配格式
 * @return
 */
public static String formatDateString(String dateTime, String valueFormat, String[] longParsePatterns, String[] shortParsePatterns) {
	String timeStr = "";
	if(StringUtils.isNotBlank(dateTime)) {
		try {
			Date time;
			if(dateTime.trim().length() > 10) {
				time = DateUtils.parseDate(dateTime.trim(), longParsePatterns);
			} else {
				time = DateUtils.parseDate(dateTime.trim(), shortParsePatterns);
			}
			return formatDate(time, valueFormat);
		} catch (Exception e) {
			log.info("时间格式化错误" + dateTime, e);
		}
	}
	return timeStr;
}

public static String formatDate(Date value, String format){
	DateFormat formatter = new SimpleDateFormat(format);
	String date = formatter.format(value);
	return date;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值