 <p>In the calendar setter area you getting the instance with actual date, then changing it's value, but not with add or substracting some piece of time. It's value is totally differs from the expected, because you setting absolute values not relatives.</p> <p>I've just extracted the calendar changes from your code and executed to demonstrate:</p> <pre><code>Calendar calendar = Calendar.getInstance(); System.out.println(calendar.getTime()); calendar.set(Calendar.DAY_OF_WEEK, 0); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 1); calendar.set(Calendar.SECOND, 0); System.out.println(calendar.getTime()); calendar.add(Calendar.HOUR, 1); System.out.println(calendar.getTime()); </code></pre> <p>the result is:</p> <pre><code>Mon Jun 17 18:00:56 CEST 2013 Sat Jun 22 00:01:00 CEST 2013 Sat Jun 22 01:01:00 CEST 2013 </code></pre>