2013-08-29 56 views
-1

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

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 =12毫米=从日历0

数据cmng ==年=35个月=1天= 4HH =0毫米= 0

我运行该代码通过对代码添加评论来添加一天,但结果仍然是相同的,除了一天,这意味着增加一天是完美的---> year = 35month = 1day = 3hh = 0mm = 0

+0

你的输出是什么?你能显示日志输出吗? –

+0

编辑它后,输出显示在那里 – HimanshuR

回答

0

您使用错误的参数调用set()方法。根据documentation,订单必须是yearmonthdate作为前三个参数,并且您将其作为第一个参数与datemonth,year一起调用。

如果你改变你的代码

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

按预期它应该工作。

奇怪的值是因为它把2013当作大约一天。 6年加入日期。

+0

你是对的,我感谢你的努力和我的错误是愚蠢的,谢谢.. – HimanshuR

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); 
+0

实际上它不是添加一天导致任何问题,你的答案后,我运行该代码通过添加评论代码添加一天,但结果仍然是相同的除了一天,这意味着增加一天是完美的--->年= 35month = 1day = 3hh = 0mm = 0 – HimanshuR

相关问题