Java 如何更改日期中的月份。valueOf

Java 如何更改日期中的月份。valueOf,java,date,Java,Date,我想知道是否只更改日期中月份的值。例如,valueOf: Date startDate = Date.valueOf("2020-01-18"); 在java中创建日期对象后,如何仅更改startDate的月份值?使用此选项 Date startDate = new GregorianCalendar(2020, 0, 18).getTime(); //(year, month - 1, day) Calendar cal = Calendar.getInstance(); cal.

我想知道是否只更改日期中月份的值。例如,valueOf:

    Date startDate = Date.valueOf("2020-01-18");
在java中创建日期对象后,如何仅更改startDate的月份值?

使用此选项

Date startDate = new GregorianCalendar(2020, 0, 18).getTime(); //(year, month - 1, day)

Calendar cal = Calendar.getInstance();
cal.setTime(startDate );
cal.set(Calendar.MONTH, Calendar.MARCH);// change to month you want 
System.out.println(cal.getTime());

tl;博士 2020-04-18

细节 这两个可怕的类
java.util.Date
java.sql.Date
在几年前被JSR 310中定义的现代java.time类所取代

对于您的输入,请使用

换个月。time类使用不可变对象。因此,我们得到了一个新的
LocalDate
,而不是改变原来的

LocalDate ldApril = ld.withMonth( 4 ) ;
ldApril.toString():2020-04-18



你看过了吗?user85421它不起作用。Date类没有valueOf()方法。我建议你不要使用
java.sql.Date
。那门课设计得很糟糕,而且早已过时。改为使用中的
LocalDate
from
LocalDate.parse(“2020-01-18”)。与(月.月)
@Ole我相信我清楚地写了一封信,不使用它,而是使用新的时间包。。。由OP决定使用哪一个(如果有选择的话)((当然它是因为某种原因被弃用的))这些糟糕的类在几年前被java.time类取代,并采用了jsr310。
LocalDate ld = LocalDate.parse( "2020-01-18" ) ;
LocalDate ldApril = ld.withMonth( 4 ) ;