如何将LocalDate格式化为字符串?

Jas*_*sko 126 java

我有一个名为date的LocalDate变量,当我打印它显示1988-05-05我需要转换它打印为05.May 1988.How这样做?

Pro*_*ock 268

如果他开始使用Java 8中新增的LocalDate,SimpleDateFormat将无法工作.从我所看到的,你将不得不使用DateTimeFormatter,http://docs.oracle.com/javase/8/docs/api/java/时间/格式/ DateTimeFormatter.html.

LocalDate localDate = LocalDate.now();//For reference
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd LLLL yyyy");
String formattedString = localDate.format(formatter);
Run Code Online (Sandbox Code Playgroud)

这应该打印在1988年5月5日.要获得一天之后和月之前的时间段,你可能不得不使用"dd'.LLLL y​​yyy"

  • 非常感谢,这有帮助,但它没有与'LLLL'一起显示月份的名称,但是'MMMM'我发现这很奇怪,因为即使在文档中它也没有说.但是再次感谢你帮助我. (4认同)
  • 现在 localDate.format(formatter); 根本不起作用 (2认同)

Zon*_*Zon 21

可以简短为:

LocalDate.now().format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));
Run Code Online (Sandbox Code Playgroud)


Arv*_*ash 14

java.time

不幸的是,所有现有的答案都忽略了一个关键的事情,Locale

日期时间解析/格式化类型(例如DateTimeFormatter现代 API 或SimpleDateFormat遗留 API 的)是Locale敏感的。其图案中使用的符号根据Locale它们所使用的内容打印文本。如果没有,它将使用JVM 的Locale默认值。Locale检查此答案以了解更多信息。

预期输出中的文本05.May 1988是英语,因此,现有的解决方案仅会出于巧合而产生预期结果(当LocaleJVM 的默认值是英语时Locale)。

使用java.time现代日期时间 API *的解决方案:

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

public class Main {
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(1988, 5, 5);
        final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd.MMMM uuuu", Locale.ENGLISH);
        String output = dtf.format(date);
        System.out.println(output);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

05.May 1988
Run Code Online (Sandbox Code Playgroud)

在这里,您可以使用yyyy来代替uuuu,但我更喜欢 u使用y

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


* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,则可以使用ThreeTen-Backport,它将大多数java.time功能向后移植到 Java 6 和 7。如果您正在处理 Android 项目和 Android API level 仍然不符合 Java-8,请检查通过脱糖可用的 Java 8+ API以及如何在 Android 项目中使用 ThreeTenABP


kar*_*k r 5

System.out.println(LocalDate.now().format(DateTimeFormatter.ofPattern("dd.MMMM yyyy")));
Run Code Online (Sandbox Code Playgroud)

上面的答案显示了今天