为了账号安全,请及时绑定邮箱和手机立即绑定

关于时间调整器的用法。最后一个月()

关于时间调整器的用法。最后一个月()

哔哔one 2022-09-14 17:44:41
这是我的jsp页面源代码:<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ page import="java.time.format.DateTimeFormatter"%>  <%@ page import="java.time.temporal.TemporalAdjusters"%>  <%@ page import="java.time.LocalDate"%>    <!DOCTYPE html><html><head><meta charset="UTF-8"><title>Local Date Demo</title></head><body><%int year=2018,month=12,date=1;LocalDate theMonthShiftStartDate=LocalDate.of(year,month,date);LocalDate theMonthShiftEndDate=theMonthShiftStartDate.with(TemporalAdjusters.lastDayOfMonth());  LocalDate previousMonthShiftStartDate=theMonthShiftStartDate.plusMonths(-1);LocalDate previousMonthShiftEndDate=previousMonthShiftStartDate.with(TemporalAdjusters.lastDayOfMonth());%>theMonthShiftStartDate=<%=theMonthShiftStartDate.format(DateTimeFormatter.ofPattern("YYYY-MM-dd"))%><br>theMonthShiftEndDate=<%=theMonthShiftEndDate.format(DateTimeFormatter.ofPattern("YYYY-MM-dd"))%><br>previousMonthShiftStartDate=<%=previousMonthShiftStartDate.format(DateTimeFormatter.ofPattern("YYYY-MM-dd"))%><br>previousMonthShiftEndDate=<%=previousMonthShiftEndDate.format(DateTimeFormatter.ofPattern("YYYY-MM-dd"))%><br></body></html>为什么输出如下: theMonthShiftStartDate=2018-12-01 theMonthShiftEndDate=2019-12-31 previousMonthShiftStartDate=2018-11-01 previousMonthShiftEndDate=2018-11-30我预计“月移日期”应该是2018-12-31,但是,它返回2019-12-31。根据爪哇多克: TemporalAdjusters.lastDayOfMonth() 返回“每月的最后一天”调整器,该调整器返回设置为当前月份的最后一天的新日期。我今天运行jsp,为什么问题只发生在“十二月”本地日期对象,而不发生在十一月?
查看完整描述

1 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

请参阅维基百科关于工作日。

示例

星期一 29 十二月 2008 写 “2009-W01-1”
星期日 3 一月 2010 写 “2009-W53-7”


你写了

DateTimeFormatter.ofPattern("YYYY-MM-dd"))

使用模式 ,您正在使用基于周的年份进行格式化。
将模式更改为 ,它使用年份YYYYyyyy-MM-dd

DateTimeFormatter.ofPattern("yyyy-MM-dd"))


查看完整回答
反对 回复 2022-09-14
  • 1 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信