java中如何将一个字符串分成两部分

0 java arrays string date

假设一个字符串由两部分组成:日期和日期。

String arr[] = { "Tuesday 8/11/22", "Monday 15/3/21", "Friday 20/5/21" };
Run Code Online (Sandbox Code Playgroud)

如何在控制台上只打印出后一部分(日期部分)?

Arv*_*ash 5

我建议您使用日期时间 API,而不是对元素执行字符串操作。字符串操作不会给您带来通过专用日期时间 API 可以获得的所有好处。

奖金

您可以免费验证您的日期,例如您的某个日期Friday 20/5/21不正确。该日期是星期四,java.timeAPI 可以自动为您执行此检查。

演示

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.TextStyle;
import java.util.Locale;

class Main {
    public static void main(String[] args) {
        String arr[] = { "Tuesday 8/11/22", "Monday 15/3/21", "Friday 20/5/21" };
        DateTimeFormatter parser = DateTimeFormatter.ofPattern("EEEE d/M/uu", Locale.ENGLISH);
        for (String s : arr) {
            LocalDate date = LocalDate.parse(s, parser);

            // Now you can get individual units from date in a variety of ways
            System.out.println(date.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.ENGLISH));
            System.out.println(date.getDayOfWeek().getDisplayName(TextStyle.SHORT, Locale.ENGLISH));
            System.out.println(date.getYear());

            // You can also format it in the desired ways
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d/M/uu", Locale.ENGLISH);
            String formatted = date.format(formatter);
            System.out.println(formatted);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出

Tuesday
Tue
2022
8/11/22
Monday
Mon
2021
15/3/21
Exception in thread "main" java.time.format.DateTimeParseException: Text 'Friday 20/5/21' could not be parsed: Conflict found: Field DayOfWeek 4 differs from DayOfWeek 5 derived from 2021-05-20
        at java.base/java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:2023)
Run Code Online (Sandbox Code Playgroud)

从Trail: Date Time中了解有关现代日期时间 API 的更多信息。