我正在尝试使用Java 8的DateTimeFormatter将诸如“ 17/01/2019”之类的字符串转换成完全相同的日期。
我当前正在使用:
function View() {
var test = $(this).Parent().val;
}
function Hide() {
var test = $(this).Parent().val;
}
并收到错误消息:
java.time.format.DateTimeParseException:无法在索引0处解析文本”
这暗示我的格式有问题。
当前,我尝试使用默认格式以及LocalDate代替LocalDateTime
答案 0 :(得分:0)
您正在尝试获取LocalDateTime
而不是LocalDate
:
LocalDateTime dExpCompletionDate = LocalDateTime.parse(sExpCompletionDate, format);
这是一个LocalDate
的小例子:
public static void main(String[] args) {
String sExpCompletionDate = "17/01/2019";
DateTimeFormatter format = DateTimeFormatter.ofPattern("dd/MM/yyyy", Locale.ENGLISH);
LocalDate dExpCompletionDate = LocalDate.parse(sExpCompletionDate, format);
// Converts LocalDate into LocalDateTime
LocalDateTime dExpCompletionDate2 = LocalDate.parse(sExpCompletionDate, format).atStartOfDay();
System.out.println(dExpCompletionDate);
System.out.println(dExpCompletionDate2);
}
输出:
2019-01-17
2019-01-17T00:00
以下是LocalDateTime
的示例:
public static void main(String[] args) {
String sExpCompletionDate = "17/01/2019 14:22:11";
DateTimeFormatter format = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss", Locale.ENGLISH);
LocalDateTime dExpCompletionDate = LocalDateTime.parse(sExpCompletionDate, format);
System.out.println(dExpCompletionDate);
}
输出:
2019-01-17T14:22:11
答案 1 :(得分:0)
由于"dd/MM/yyyy"
是日期格式,因此无法使用它解析为DateTime
。您可以做的是,解析为Date
,然后将StartOfDay
作为DateTime
DateTimeFormatter format = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDateTime dExpCompletionDate = LocalDate.parse("01/01/2019", format).atStartOfDay();
答案 2 :(得分:-2)
使用SimpleDateFormat
。这是一个工作示例:
import java.text.SimpleDateFormat;
import java.util.Date;
public class StringToDateExample1 {
public static void main(String[] args)throws Exception {
String sDate1="31/12/1998";
Date date1=new SimpleDateFormat("dd/MM/yyyy").parse(sDate1);
System.out.println("Date is : "+date1);
}
}
有关更全面的答案,请参阅BalusC的reply。