我正在努力将一个大的15位数字符串转换为日期格式。
示例代码:
String dateInString = "201410051252323";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ssZ");
LocalDateTime dateTime = LocalDateTime.parse(dateInString, formatter);
我遇到了异常
java.time.format.DateTimeParseException: Text '2014100591523' could not be parsed at index 0
任何人都可以建议在Java 8中执行此操作的最佳方法
答案 0 :(得分:1)
你有正确的想法,但你的代码有两个问题 - 一个语法,另一个是后勤:
ZonedDateTime
或OffsetDateTime
类而不是LocalDateTime
我不确定' 3'在你的示例字符串中应该表示,如果确实应该表示区域偏移。如果您无法控制数据集的格式,则必须剥离最终数字并单独处理。
String dateInString = "201410051252323"; String dateTimeString = dateInString.substring(0, 14); // "20141005125232" String zoneDigitString = dateInString.substring(14); // "3" DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); // no "Z" LocalDateTime dateTime = LocalDateTime.parse(dateTimeString, formatter); /* Manually convert zoneDigitString to a ZoneId here */ ZoneId zone = ...; ZonedDateTime zonedDateTime = dateTime.atZone(zone);
你必须处理" ..."部分靠你自己,取决于" 3"表示。