当将一个Java字符串转换为时间对象时,有时候会出现“Unparseable date”(无法解析日期)的错误,这是非常常见的错误。通常情况下,这个问题是由于日期字符串与SimpleDateFormat模式字符串不匹配造成的。下面是解决此问题的完整攻略。
步骤1:确定日期格式
首先,需要确定原始日期的格式。在Java中,使用SimpleDateFormat类可以将字符串从一种格式转换为另一种格式。在转换过程中,必须提供日期格式的定义。
例如,以下日期格式定义字符串可以表示"2021/05/31 15:28:54": "yyyy/MM/dd HH:mm:ss"
步骤2:使用SimpleDateFormat解析日期字符串
使用确定的格式,可以调用SimpleDateFormat.parse()方法将字符串转换为日期对象:
String dateString = "2021/05/31 15:28:54";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = dateFormat.parse(dateString);
示例1:将日期字符串转换为时间戳
假设我们要将日期字符串转换为时间戳。可以使用Date对象的getTime()方法将其转换为时间戳:
String dateString = "2021/05/31 15:28:54";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = dateFormat.parse(dateString);
long timestamp = date.getTime();
System.out.println(timestamp);
代码会输出时间戳:1622449734000
示例2:将日期字符串转换为LocalDateTime对象
Java 8引入了新的日期和时间API,其中有一个LocalDateTime类可以轻松将日期时间对象表示为本地时间。下面的示例演示如何使用SimpleDateFormat将日期字符串转换为LocalDateTime对象:
String dateString = "2021/05/31 15:28:54";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = dateFormat.parse(dateString);
Instant instant = date.toInstant();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
System.out.println(localDateTime);
代码会输出LocalDateTime对象:2021-05-31T15:28:54
以上就是解决Java字符串转换为时间对象时Unparseable date出错的问题的完整攻略。如果日期格式定义不正确,或者字符串日期与格式不匹配,都会导致这个错误的发生。确定并使用正确的日期格式,然后使用SimpleDateFormat解析日期字符串可以解决此类问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决java字符串转换成时间Unparseable date出错的问题 - Python技术站