Spe*_*ius 1 java formatting date localdatetime
我想转换以下字符串:
private String cw = "35/19"
Run Code Online (Sandbox Code Playgroud)
分成 2 个日期。
开始日期可以格式化为:
private final DateTimeFormatter startOfWeekFormat = new DateTimeFormatterBuilder()
.appendPattern("ww/YY")
.parseDefaulting(WeekFields.ISO.dayOfWeek(), 1)
.toFormatter();
Run Code Online (Sandbox Code Playgroud)
调用时返回:26.08.2019
LocalDate.parse(cw, startOfWeekFormat).atStartOfDay();
Run Code Online (Sandbox Code Playgroud)
但我在本周结束时挣扎,这基本上是下周“36/19”的开始。
我尝试添加 plus 8 天,但这会引发异常:
private final DateTimeFormatter endOfWeekFormat = new DateTimeFormatterBuilder()
.appendPattern("ww/YY")
.parseDefaulting(WeekFields.ISO.dayOfWeek(), 8)
.toFormatter();
Run Code Online (Sandbox Code Playgroud)
LocalDateTime ldt=LocalDate.parse(cw, startOfWeekFormat)
.atStartOfDay()
.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
Run Code Online (Sandbox Code Playgroud)
演示:
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.temporal.TemporalAdjusters;
import java.time.temporal.WeekFields;
public class Main {
public static void main(String[] args) {
String cw = "35/19";
final DateTimeFormatter startOfWeekFormat = new DateTimeFormatterBuilder()
.appendPattern("ww/YY")
.parseDefaulting(WeekFields.ISO.dayOfWeek(), 1)
.toFormatter();
LocalDateTime ldt=LocalDate.parse(cw, startOfWeekFormat)
.atStartOfDay()
.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
System.out.println(ldt);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
2019-09-02T00:00
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |