我正在尝试获取下一个即将到来的星期五的日期,并将其格式化为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
答案 0 :(得分:4)
大D
表示day-of-year
。你必须使用小d
。
所以在你的情况下使用"yyyyMMdd"
。
您可以检查所有模式here。
此特定模式内置于Java 8及更高版本:DateTimeFormatter.BASIC_ISO_DATE
答案 1 :(得分:1)
我认为你有两个问题。
首先,您在字符文字(''
vs ""
)中包含字符串。
其次,格式字符串中的DD
(一年中的某一天)需要为dd
(每月的某一天)。
DateTimeFormatter.ofPattern("yyyyMMdd");