我必须在一周前和一个月前安排一个日期。如果我尝试使用一周前的日子是有效的,但如果当天 es 5 并且它必须更改月份则不起作用,它会更改我的年份。关于改变我的月份 字符串addUrl =“”;
SimpleDateFormat sdf = new SimpleDateFormat("dd.mm.yyyy");
// surround below line with try catch block as below code throws checked
// exception
Date endDate = sdf.parse(request.getParameter(field.getId()));
Calendar cal = DateToCalendar(endDate);
cal.setTime(endDate);
SimpleDateFormat formatToSend = new SimpleDateFormat("yyy-mm-dd");
case "day":
cal.add(Calendar.DATE, -1);
addUrl = "startDate=" + formatToSend.format(cal.getTime()) + "&endDate=" + endDateString;
break;
case "week":
cal.add(Calendar.DATE, -6); // number of days to add
addUrl = "startDate=" + formatToSend.format(cal.getTime()) + "&endDate=" + endDateString;
break;
default:
cal.add(Calendar.MONTH, -1); // number of days to add
addUrl = "startDate=" + formatToSend.format(cal.getTime()) + "&endDate=" + endDateString;
}
我怎样才能做到这一点?
谢谢
在您的
SimpleDateFormat
对象中,您应该使用 MM
表示月份,而不是 mm
,因为 mm
表示 分钟,而不是月份。
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
SimpleDateFormat formatToSend = new SimpleDateFormat("yyyy-MM-dd");
java.text.SimpleDateFormat
的API文档。
我不确定我是否完全理解这个问题,但是一个潜在的问题是你的日期格式
m = 分钟 小时
M = 年中的月<- maybe the one you want?
请参阅此处了解更多示例。
https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
永远不要使用有严重缺陷的遗留日期时间类,例如
Date
、Calendar
、SimpleDateFormat
等。
仅使用 java.time 类。对于仅日期值,没有时间和时区,请使用
LocalDate
。
指定您的开始日期。
LocalDate start = LocalDate.parse( "2025-01-23" ) ;
计算昨天。
LocalDate yesterday = start.minusDays( 1 ) ;
一周前确定日期。
LocalDate weekPrior = start.minusWeeks( 1 ) ;
一个月前确定。
LocalDate monthPrior = start.minusMonths( 1 ) ;