为什么参数上的日期已更新

时间:2015-11-09 15:58:23

标签: java calendar

我真的无法理解这个问题。

我有这个功能

public Timestamp getRealDateInvoice(Timestamp dateInvoiced) {

  Timestamp date = dateInvoiced;        
  if (INVOICEFREQUENCY_Monthly.equals(getInvoiceFrequency())
                    || INVOICEFREQUENCY_TwiceMonthly.equals(getInvoiceFrequency())) {
    Calendar aCalendar = Calendar.getInstance();
    aCalendar.add(Calendar.MONTH, -1); // add -1 month to current month
    aCalendar.set(Calendar.DATE, 1); // set DATE to 1, so first date of previous month
    aCalendar.set(Calendar.DATE, aCalendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // set actual maximum date of the previous month
    date.setTime(aCalendar.getTimeInMillis());
  }

我将使用此值执行它:getRealDateInvoice('09/11/2015') 结果

date = 31/10/2015(这是好的)。

dateInvoiced = 31/10/2015(这不是好的)。

问题: 为什么变量dateInvoiced也已更新 谢谢。

1 个答案:

答案 0 :(得分:0)

创建一个新的Timestamp对象,因为它将long类型作为参数,如下所示:

DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = dateFormat.parse("09/11/2015");
long time = date.getTime();
new Timestamp(time);