Java Timestamp从MySQL数据库取出的字符串转换为LocalDateTime

最新在工作中使用了Java8的LocalDateTime这个新的日期时间类,整体感觉还是不错的。

不过在使用过程中遇到一个问题,写了个转换方法。

我在从一个从数据库取出并生成的一个名为user的实体对象。这个实体对象包涵一个String(BTW.为什么Java到8了还不能像c#一样写成string)类型的属性,这个属性是由数据库中的timestamp直接转换过来的,所以生成了一个"2016-01-2517:55:38.0"这个的字符串。可是在使用LocalDateTime.parse()方法(两个重载方法都不行)会有DateTimeParseException抛出,我在文档里没找到LocalDateTime提供的合适的转换的方法。所以小实验了一下,写了下面的转换方法。

/**
	 * 
	 * @Title 
	 * @Description 将带有纳秒的时间字符串转换成LocalDateTime
	 * @param str
	 * @return
	 */
	public static LocalDateTime timestampStrToLocalDateTime(String str){
		
		long millis = Timestamp.valueOf(str).getTime();
		
		Calendar calendar = Calendar.getInstance();
		calendar.setTimeInMillis(millis);
		Date date = calendar.getTime();
		
		SimpleDateFormat sdm = new  SimpleDateFormat(LocalDateTimeUtils.LONG_DATE_FORMAT);
		
		return LocalDateTime.parse(sdm.format(date), LocalDateTimeUtils.LONG_DATE_FORMATTER);
	}

亲测可用。

由于我寻找其他方法不是很详细,可能有更好的方法。哪位同行有好的方法,请不吝赐教。

相关推荐