 <p>By using <code>add</code>, you are effectively getting a calendar instance that is 2015 years, 6 months, 20 days, and 19 hours <em>later</em> than now. Instead use the <a href="http://docs.oracle.com/javase/8/docs/api/java/util/GregorianCalendar.html#GregorianCalendar-int-int-int-int-int-" rel="nofollow">constructor</a>:</p> <pre><code>Calendar cal = new GregorianCalendar(2015, 5, 20, 19, 0); </code></pre> <p>and do not call <code>add</code>.</p> <p>Alternatively, you can use <code>set</code> instead of add:</p> <pre><code>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); </code></pre>