我正在使用Calendar API,但我认为我做错了
Calendar cal = new GregorianCalendar(TimeZone.getDefault());
cal.add(Calendar.YEAR, 2015);
cal.add(Calendar.MONTH, 6);
cal.add(Calendar.DAY_OF_MONTH, 20);
cal.add(Calendar.HOUR, 19);
cal.add(Calendar.MINUTE, 0);
Log.d("TAG", cal.getTime().toString());
为什么我会得到这个值?
D/TAG﹕ Thu Jan 09 13:24:24 CEST 4031
答案 0 :(得分:3)
您正在呼叫add
,而不是set
,因此您要将2015
年,6
个月等添加到已经Calendar
的对象中初始化到现在(2015年6月19日)。
请致电set
。不要忘记从基于0
的月份中减去一个,或者您将获得7月而不是6月。
Calendar cal = new GregorianCalendar(TimeZone.getDefault());
cal.set(Calendar.YEAR, 2015);
cal.set(Calendar.MONTH, 5); // 5 is June because 0 is January
cal.set(Calendar.DAY_OF_MONTH, 20);
cal.set(Calendar.HOUR, 19);
cal.set(Calendar.MINUTE, 0);
答案 1 :(得分:0)
通过使用add
,您实际上可以获得比现在更短的2015年,6个月,20天和19个小时的日历实例。而是使用constructor:
Calendar cal = new GregorianCalendar(2015, 5, 20, 19, 0);
并且不要致电add
。
或者,您可以使用set
代替添加:
cal.set(Calendar.YEAR, 2015);
cal.set(Calendar.MONTH, 5); // 0-based
cal.set(Calendar.DAY_OF_MONTH, 20);
cal.set(Calendar.HOUR, 19);
cal.set(Calendar.MINUTE, 0);