使用 Scanner 在 Java 中讀取日期
瀏覽人數:568最近更新:
一、概述
在本快速教程中,我們將學習從Scanner讀取Date 。我們假設日期格式是yyyy-MM-dd並且日期是Scanner的唯一內容。
2. 將輸入解析為 LocalDate
Scanner API 提供了一個簡單的文本掃描器。由於我們的Scanner有一個獨特的元素,我們將使用next()方法來獲取它。否則,我們可能應該先做一些初步的工作來解析它。
此外,Java 8 引入了全新的 Date/Time API。讓我們創建一個具有給定格式的DateTimeFormatter並解析結果LocalDate :
LocalDate scanToLocalDate(String input) {
try (Scanner scanner = new Scanner(input)) {
String dateString = scanner.next();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
return LocalDate.parse(dateString, formatter);
}
}
Scanner類實現了AutoCloseable接口,因此我們可以使用try-with-resources來創建我們的Scanner 。此塊負責自動關閉Scanner資源。
總而言之,我們可以檢查我們的代碼返回的LocalDate是否與我們通過直接解析輸入獲得的相同。鑑於我們將我們的課程命名為DateScanner :
@Test
void whenScanToLocalDate_ThenCorrectLocalDate() {
String dateString = "2018-09-09";
assertEquals(LocalDate.parse(dateString, DateTimeFormatter.ofPattern("yyyy-MM-dd")), new DateScanner().scanToLocalDate(dateString));
}
3. 將輸入解析為日期
對於比 Java 8 更早的版本,我們可以改用原始的Date API。主要區別在於我們現在需要創建一個DateFormat來解析我們的Date :
Date scanToDate(String input) throws ParseException {
try (Scanner scanner = new Scanner(input)) {
String dateString = scanner.next();
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
return formatter.parse(dateString);
}
}
同樣,我們可以測試方法輸出的一致性:
@Test
void whenScanToDate_ThenCorrectDate() throws ParseException {
String dateString = "2018-09-09";
assertEquals(new SimpleDateFormat("yyyy-MM-dd").parse(dateString), new DateScanner().scanToDate(dateString));
}
此外,讓我們指出try-with-resources是在 Java 7 中引入的。對於較早的版本,我們需要手動關閉Scanner資源。
4。結論
在本文中,我們將Scanner輸入解析為LocalDate 。然後,我們看到了與 Java 的早期Date API 等效的代碼。
與往常一樣,代碼在 GitHub 上可用。
本作品係原創或者翻譯,採用《署名-非商業性使用-禁止演繹4.0國際》許可協議