添加天数到某个Calendar变量似乎不起作用

时间:2016-11-15 23:08:49

标签: java calendar

我正在做一个关于在java中创建酒店预订系统的项目。我需要帮助,因为我觉得我的代码是正确的(显然不是)但它似乎没有给我正确的结果。

所以我想做的是我有2个日期,一个用于办理登机手续,一个用于结账。 我向用户询问签入日期是否正常,我将签入日期设置为输入。然后我问他/她将要入住的夜晚。通过使用入住日期和入住天数,我应该能够计算预订的费用,但是当我将入住日期加入到结账日期时,它会将登记日期设置为结账日期并计算成本从那里。

示例:Checkin = thurs,night of = =。

它将登记日期设置为星期六(星期二+ 2),并将结帐日期设置为该日期,但计算从星期一到星期一的入住费用。

 String days [] = {"MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY",         "SATURDAY", "SUNDAY"};
Calendar ci = r.getStartDate();
System.out.println("Original: " + ci.getTime());
Calendar co = ci;

for(int y = 0; y < nights; y++)
{
  co.add(Calendar.DAY_OF_MONTH, 1);
  int dayOfWeek = co.get(Calendar.DAY_OF_WEEK);
  cost = cost + rates[dayOfWeek-1];
}

System.out.println("From: " + r.getStartDate().getTime());
System.out.println("Until: " + co.getTime());
r.setEndDate(co);
cost = cost - (cost*disc);
r.setCost(cost);
} 

原始输出是正确的日期,但不同之处是奇怪的。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您的开始日期和结束日期是相同的,因为您的开始和结束日历对象是相同的对象:

Calendar ci = r.getStartDate();
Calendar co = ci;

您对co所做的任何修改也会修改r.getStartDate()(和ci,但您永远不会使用该变量。)

我怀疑你想这样做:

Calendar co = new Calendar();
co.setTime(r.getStartDate().getTime());

完全删除ci变量。