如何将LocalDate格式化为yyyyMMDD(不使用JodaTime)

时间:2017-08-09 18:24:57

标签: java

我正在尝试获取下一个即将到来的星期五的日期,并将其格式化为yyyyMMDD。如果可能的话,我想在不使用JodaTime的情况下这样做。这是我的代码:

import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
import java.time.DayOfWeek;
import java.time.format.DateTimeFormatter;

// snippet from main method
LocalDate friday = LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.FRIDAY));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern('yyyyMMDD');
System.out.println(friday.format(formatter));

但是当我运行这个时,我得到以下错误(今天运行它20170809)

java.time.DateTimeException: Field DayOfYear cannot be printed as the value 223 exceeds the maximum print width of 2

我做错了什么?

编辑:我正在使用Java 8

2 个答案:

答案 0 :(得分:4)

D表示day-of-year。你必须使用小d

所以在你的情况下使用"yyyyMMdd"

您可以检查所有模式here

此特定模式内置于Java 8及更高版本:DateTimeFormatter.BASIC_ISO_DATE

答案 1 :(得分:1)

我认为你有两个问题。

首先,您在字符文字('' vs "")中包含字符串。

其次,格式字符串中的DD(一年中的某一天)需要为dd(每月的某一天)。

DateTimeFormatter.ofPattern("yyyyMMdd");