Java 更改特定日期的日期格式

Java Changing date format for a specific day

我想使用 SimpleDateFormat 按以下格式编写今天的日期:

今天,13:14

在其他日子,我想将其打印为日期和时间:

2021 年 12 月 6 日,12:59

我可以写前几天的日期和时间格式,但不能写白天的“今天 [HOUR]”格式。

textViewDate.setText(new SimpleDateFormat("dd.MM.yyyy HH:mm")

请指导。谢谢。

我不知道现有的日期格式可以满足您的要求。所以你必须自己做条件案例。

如果日期在“今天”范围内(但是您想要定义它,关于时区等),请使用“今天”格式生成文本。如果在外面,请使用通用格式。

如果你使用java +8,你可以使用Date/Time API (LocalDate) 来计算两个日期之间的差异,并检查它是否相同的日期,根据比较选择您的格式 Java Date Format

java.time

这需要两个格式化程序和一个 if 语句。

考虑使用 java.time,现代 Java 日期和时间 API,作为您的日期和时间工作。让我们先声明两个格式化程序。

private static final DateTimeFormatter TODAY_FORMATTER
        = DateTimeFormatter.ofPattern("'Today,' HH:mm", Locale.ENGLISH);
private static final DateTimeFormatter ANOTHER_DAY_FORMATTER
        = DateTimeFormatter.ofPattern("dd.MM.yyyy, HH:mm", Locale.ENGLISH);

要尝试使用不同的日期和时间:

    LocalDateTime[] dateTimes = {
            LocalDateTime.of(2021, Month.DECEMBER, 7, 23, 45),
            LocalDateTime.of(2021, Month.DECEMBER, 8, 12, 34),
            LocalDateTime.of(2021, Month.DECEMBER, 9, 04, 23)
    };

    LocalDate today = LocalDate.now(ZoneId.systemDefault());
    for (LocalDateTime ldt : dateTimes) {
        String formattedDateTime;
        if (ldt.toLocalDate().isEqual(today)) {
            formattedDateTime = ldt.format(TODAY_FORMATTER);
        }
        else {
            formattedDateTime = ldt.format(ANOTHER_DAY_FORMATTER);
        }
        System.out.println(formattedDateTime);
    }

当我今天 运行(我所在时区的 12 月 8 日)时,我得到:

07.12.2021, 23:45
Today, 12:34
09.12.2021, 04:23

如果你坚持老套,我相信同样的技巧也适用于SimpleDateFormat。您当然会有一项非常重要的任务,即确定日期是否是今天。