Bagaimana cara mengurai LocalDateTime dengan spasi terdepan?

Saya mencoba mengurai tanggal dari halaman html menggunakan LocalDateTime. Dan saya tidak dapat menemukan solusi agar tes berikut ini lulus.

(Menggunakan TestNG) Baris pertama selalu gagal

static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("E MMM dd HH:mm:ss u");

    @DataProvider(name = "dateTimeFormats")
public Object[][] dateTimeFormats() {
    return new Object[][]{
            {"Mon Jan  5 06:41:07 2015", LocalDateTime.of(2015, 1, 5, 6, 41, 7)},
            {"Sun Jan 25 00:48:23 2015", LocalDateTime.of(2015, 1, 25, 0, 48, 23)},
            {"Mon Aug 14 07:58:00 2006", LocalDateTime.of(2006, 8, 14, 7, 58, 0)}
    };
}

@Test(dataProvider = "dateTimeFormats")
public void testParsePostDateTime(String dateTimeString, LocalDateTime expectedResult) {
    LocalDateTime result = LocalDateTime.parse(dateTimeString, DATE_TIME_FORMATTER);
    assertEquals(result, expectedResult);
}

Adakah ide pola tanggal mana yang harus digunakan?


person Yurii Bondarenko    schedule 25.01.2015    source sumber
comment
apa dateTimeString dan ExpectResult Anda?   -  person SMA    schedule 25.01.2015
comment
@almasshaikh Ketika saya mencoba mengurai string ini Senin 5 Jan 06:41:07 2015 - Saya ingin mendapatkan hasil ini LocalDateTime.of(2015, 1, 5, 6, 41, 7)   -  person Yurii Bondarenko    schedule 25.01.2015
comment
Apakah terlalu merepotkan untuk memasukkan dateTimeString.replaceAll(" +", " ")?   -  person Marko Topolnik    schedule 25.01.2015


Jawaban (1)


Anda dapat menggunakan pola "E MMM ppd HH:mm:ss u". Penjelasan simbol p lihat javadoc . Ini berarti mengisi bidang berikutnya hingga lebarnya karena jumlah huruf p yang tersedia.

person Meno Hochschild    schedule 26.01.2015
comment
Itu solusi yang sangat elegan. Persis apa yang saya cari. - person Yurii Bondarenko; 26.01.2015
comment
double pp sebelum d tampaknya berlawanan dengan intuisi untuk hanya memasukkan satu spasi ‹spasi›1, ‹spasi›2, ... mungkin artinya pp dua karakter digunakan, dan d adalah bidang hari-bulan? (docs.Oracle.com/javase /8/docs/api/java/time/format/) - person Mariano Paniga; 20.08.2019
comment
@MarianoPaniga Simbol p didasarkan pada metode pembuat padNext(int) yang argumennya (sama dengan jumlah pola huruf) menentukan seluruh lebar bidang. Jadi diperlukan dua huruf pp untuk bidang dua digit. - person Meno Hochschild; 21.08.2019