Android日历没有给出预期的结果

时间:2013-08-29 05:11:59

标签: java android calendar

我将值传递给日历实例,但不知道为什么它没有按预期执行。我想在特定日期添加一天,然后使用该日期。

Log.v("data going to calendar==",
  "year="+Integer.parseInt(fy)+
  "month="+Integer.parseInt(fm)-1)+
  "day="+Integer.parseInt(fd)+
  "hh="+Integer.parseInt(fh)+
  "mm="+Integer.parseInt(fmn));

c.set(
  Integer.parseInt(fd),
  Integer.parseInt(fm)-1,
  Integer.parseInt(fy),
  Integer.parseInt(fh),
  Integer.parseInt(fmn));

c.add(Calendar.DAY_OF_MONTH,1);

Log.v("data coming from calendar==", 
   "year = " + c.get(Calendar.YEAR)+
   "month ="+ c.get(Calendar.MONTH)+
   "day ="+c.get(Calendar.DATE)+
   "hh="+c.get(Calendar.HOUR)+
   "mm="+c.get(Calendar.MINUTE));

输出是: 数据gng到日历==年= 2013month = 7day = 29hh = 12mm = 0

日历中的数据cmng == year = 35month = 1day = 4hh = 0mm = 0

我通过对代码添加注释添加一天来运行该代码,但结果仍然相同,除了白天,这意味着添加一天工作完美---> 年= 35个月= 1天= 3hh = 0mm = 0

2 个答案:

答案 0 :(得分:0)

如果您想将日期 - 24小时 - 添加到日期,请将其添加为毫秒:1天= 24 * 60 * 60 * 1000毫秒。

Calendar c = Calendar.getInstance();
//Set calendar's fields here
long time = c.getTimeInMilliseconds();
long nextDay = time + 24 * 60 * 60 * 1000;
c.setTimeInMillis(nextDay);

答案 1 :(得分:0)

使用错误的参数调用set()方法。根据{{​​3}},订单必须为yearmonthdate作为前三个参数,您可以使用datemonth来调用它, year作为第一个参数。

如果您将代码更改为

c.set(Integer.parseInt(fy),
    Integer.parseInt(fm)-1,
    Integer.parseInt(fd),
    Integer.parseInt(fh),
    Integer.parseInt(fmn));

它应该按预期工作。

奇怪的价值观是因为它将2013视为大约的日期。 6年被添加到日期。