Uma*_*Uma 13 date-parsing java-8 java-time
我使用Java 8来解析日期并找到两个日期之间的差异.
这是我的片段:
String date1 ="01-JAN-2017";
String date2 = "02-FEB-2017";
DateTimeFormatter df = DateTimeFormatter .ofPattern("DD-MMM-YYYY", en);
LocalDate d1 = LocalDate.parse(date1, df);
LocalDate d2 = LocalDate.parse(date2, df);
Long datediff = ChronoUnit.DAYS.between(d1,d2);
Run Code Online (Sandbox Code Playgroud)
当我运行时,我收到错误:
java.time.format.DateTimeParseException:无法在索引3处解析文本
小智 22
首先,检查javadoc.大写D表示天的年字段(不是当天的日,只要你想),和大写Y表示基于为期一周的年字段(而不是一年,只要你想).正确的模式是小写字母d和y.
此外,您使用大写字母(JAN和FEB)的月份名称,因此您的格式化程序必须不区分大小写(默认行为是只接受像Jan和这样的值Feb).这些月份名称是英文缩写,因此您还必须使用英语区域设置来确保它正确解析名称(使用java.util.Locale类).
因此,您的格式化程序应该像这样创建:
DateTimeFormatter df = new DateTimeFormatterBuilder()
// case insensitive to parse JAN and FEB
.parseCaseInsensitive()
// add pattern
.appendPattern("dd-MMM-yyyy")
// create formatter (use English Locale to parse month names)
.toFormatter(Locale.ENGLISH);
Run Code Online (Sandbox Code Playgroud)
这将使您的代码工作(datediff并将成为32).
Ram*_*tta 19
以下代码有效。问题是您使用的是“JAN”而不是“Jan”。DateTimeFormatter 似乎无法识别。并将模式更改为“d-MMM-yyyy”。
String date1 ="01-Jan-2017";
String date2 = "02-Feb-2017";
DateTimeFormatter df = DateTimeFormatter.ofPattern("d-MMM-yyyy");
LocalDate d1 = LocalDate.parse(date1, df);
LocalDate d2 = LocalDate.parse(date2, df);
Long datediff = ChronoUnit.DAYS.between(d1,d2);
Run Code Online (Sandbox Code Playgroud)
来源:https : //www.mkyong.com/java8/java-8-how-to-convert-string-to-localdate/
| 归档时间: |
|
| 查看次数: |
32810 次 |
| 最近记录: |