Date特殊时间转换

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
String format = df.format(new Date());
System.out.println(format);//2018-01-24T09:17:19.993+08:00
SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
String format2 = df2.format(new Date());
System.out.println(format2);//2018-01-24T09:17:19+08:00
Date parse = df2.parse("2018-01-11T12:00:03+00:00");
System.out.println(parse);//Thu Jan 11 20:00:03 CST 2018

SimpleDateFormat线程安全问题

在使用SimpleDateFormat时常常会忽略掉一个问题,就是拿一个new的实例去转换多个时间,此时当发生高并发时,会发生转换出来的时间结果不是自己想要的。

解决办法就是要么给每一个转换时间的方法new一个自己的SimpleDateFormat实例,要么使用ThreadLocal。

private static final ThreadLocal<SimpleDateFormat> dateFormatter = new ThreadLocal<SimpleDateFormat>() {

		@Override
		protected SimpleDateFormat initialValue() {
			// TODO Auto-generated method stub
			return  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		}
		
	};
String format = dateFormatter.get().format(new Date());


猜你喜欢

转载自blog.csdn.net/h363659487/article/details/79149742