日历月份和年份

问题描述 投票:0回答:3

我必须在一周前和一个月前安排一个日期。如果我尝试使用一周前的日子是有效的,但如果当天 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;

    }

我怎样才能做到这一点?

谢谢

java date calendar
3个回答
2
投票

在您的

SimpleDateFormat
对象中,您应该使用
MM
表示月份,而不是
mm
,因为
mm
表示 分钟,而不是月份。

SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");

SimpleDateFormat formatToSend = new SimpleDateFormat("yyyy-MM-dd");

参见

java.text.SimpleDateFormat
的API文档。


0
投票

我不确定我是否完全理解这个问题,但是一个潜在的问题是你的日期格式

m = 分钟 小时

M = 年中的月<- maybe the one you want?

请参阅此处了解更多示例。

https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html


0
投票

java.time

永远不要使用有严重缺陷的遗留日期时间类,例如

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 ) ;
© www.soinside.com 2019 - 2024. All rights reserved.