java 智能分析字符串格式,然后进行转化为日期对象。

10 篇文章 1 订阅
6 篇文章 0 订阅

经常需要使用常用的日期格式字符串转化为java的date对象。每次写"yyyy-MM-dd"之类的就好烦,为什么不能直接根据字符串本身格式自动转化吗?于是自己写了个方法把常用转化日期格式字符串自动匹配,然后进行转化。

/***
	 * 智能分析字符串格式,然后进行转化为日期对象。
	 * @param source
	 * @return
	 * @throws ParseException
	 */
	public static Date getDate(String source) throws ParseException{
		if(source == null || "".equals(source)){
			return null;
		}
		DateFormat sdf = null;
		if(source.matches("^[1-9][0-9]{3}-[0-1][0-9]-[0-3][0-9]$")){
			sdf = new SimpleDateFormat("yyyy-MM-dd");
		}
		else if(source.matches("^[1-9][0-9]{3}[0-1][0-9][0-3][0-9]$")){
			sdf = new SimpleDateFormat("yyyyMMdd");
		}
		else if(source.matches("^[1-9][0-9]{3}-[0-1][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9]$")){
			sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		}
		else if(source.matches("^[1-9][0-9]{3}-[0-1][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9]\\.[0-9]{3}$")){
			sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
		}
		else{
			throw new ParseException("暂不支持该格式的字符串!" + source, 0);
		}
		return sdf.parse(source);
	}

public static void main(String[] args) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
		try {
			System.out.println(getDate(""));
			System.out.println(sdf.format(getDate("2022-13-30")));
			System.out.println(sdf.format(getDate("20221330")));
			System.out.println(sdf.format(getDate("2022-13-30 15:05:24")));
			System.out.println(sdf.format(getDate("2022-13-30 15:05:24.856")));
			System.out.println(getDate("20221330 15:05:24.856"));
		} catch (ParseException e) {
			System.err.println(e.getMessage());
		}
	}

测试结果: 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值