-1

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

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 到日历==年 = 2013 月 =7 天 =29hh=12mm=0

来自日历的数据cmng==年=35月=1天=4小时=0毫米=0

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

4

2 回答 2

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);
于 2013-08-29T05:30:23.510 回答
0

set()您使用错误的参数调用该方法。根据文档,顺序必须是year, month,date作为前三个参数,并且您使用date, month,year作为第一个参数来调用它。

如果您将代码更改为

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

它应该按预期工作。

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

于 2013-08-29T06:09:33.050 回答