Idk ... honestly. I tried to recreate your problem, but in Eclipse on a PC, not on Android. This is what I used:
Calendar c = new GregorianCalendar(TimeZone.getTimeZone(ZoneId.ofOffset("", ZoneOffset.ofHours(-11))), Locale.US); c.set(2016, 0, 7, 0, 7); String strFormat = "yyyy-MM-dd HH:mm:ss.SSS"; SimpleDateFormat df = new SimpleDateFormat(strFormat, Locale.US); SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd kk:mm", Locale.US); SimpleDateFormat df3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.US); Date d = c.getTime(); String s = d.toString(); String ret = df.format(c.getTime()); String ret2 = df.format(new Date(System.currentTimeMillis())); String ret3 = df2.format(c.getTime()); String ret4 = df3.format(c.getTime()); String r1 = ""+c.get(Calendar.HOUR); System.out.printf("s = %s%nret = %s%nret2 = %s%nret3 = %s%nret4 = %s%nr1 = %s%n%n", s, ret, ret2, ret3, ret4, r1); df.setTimeZone(TimeZone.getTimeZone(ZoneId.ofOffset("", ZoneOffset.ofHours(-11)))); df2.setTimeZone(TimeZone.getTimeZone(ZoneId.ofOffset("", ZoneOffset.ofHours(-11)))); df3.setTimeZone(TimeZone.getTimeZone(ZoneId.ofOffset("", ZoneOffset.ofHours(-11)))); d = c.getTime(); s = d.toString(); ret = df.format(c.getTime()); ret2 = df.format(new Date(System.currentTimeMillis())); ret3 = df2.format(c.getTime()); ret4 = df3.format(c.getTime()); r1 = ""+c.get(Calendar.HOUR); System.out.printf("s = %s%nret = %s%nret2 = %s%nret3 = %s%nret4 = %s%nr1 = %s%n%n", s, ret, ret2, ret3, ret4, r1); c.set(2016, 0, 7, 1, 7); d = c.getTime(); s = d.toString(); ret = df.format(c.getTime()); ret2 = df.format(new Date(System.currentTimeMillis())); ret3 = df2.format(c.getTime()); ret4 = df3.format(c.getTime()); r1 = ""+c.get(Calendar.HOUR); System.out.printf("s = %s%nret = %s%nret2 = %s%nret3 = %s%nret4 = %s%nr1 = %s%n", s, ret, ret2, ret3, ret4, r1);
And here is what I got:
s = Thu Jan 07 12:07:58 CET 2016 ret = 2016-01-07 12:07:58.662 ret2 = 2016-01-07 17:55:58.697 ret3 = 2016-01-07 12:07 ret4 = 2016-01-07 12:07:58.662 r1 = 0 s = Thu Jan 07 12:07:58 CET 2016 ret = 2016-01-07 00:07:58.662 ret2 = 2016-01-07 05:55:58.718 ret3 = 2016-01-07 24:07 ret4 = 2016-01-07 00:07:58.662 r1 = 0 s = Thu Jan 07 13:07:58 CET 2016 ret = 2016-01-07 01:07:58.662 ret2 = 2016-01-07 05:55:58.722 ret3 = 2016-01-07 01:07 ret4 = 2016-01-07 01:07:58.662 r1 = 1
Perhaps there is a problem in your SimpleDateFormat that uses a different time zone ... This is really interesting.