

Java vypis datumu
Zdravim, potreboval bych vysvetlit, proc kod#1 vypise 31.10.2013 19:59:59 a kod#2 vypise 01.11.2013 03:59:59. Cekal bych vysledky obou kodu ekvivalentni, diky.
kod#1
public static void main(String[] args) {
Calendar to = Calendar.getInstance();
to.set(Calendar.DAY_OF_MONTH, 31);
to.set(Calendar.MONTH, 9);
to.set(Calendar.YEAR, 2013);
to.set(Calendar.HOUR_OF_DAY, 23);
to.set(Calendar.MINUTE, 59);
to.set(Calendar.SECOND, 59);
to.setTimeZone(TimeZone.getTimeZone("Asia/Aqtau"));
// System.out.println(TimeZone.getDefault().getID());
// System.out.println(Arrays.toString(TimeZone.getAvailableIDs()));
SimpleDateFormat dateformat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
// dateformat.setTimeZone(TimeZone.getTimeZone("Asia/Aqtau"));
System.out.println(dateformat.format(to.getTime()));
}
kod#2
public static void main(String[] args) {
Calendar to = Calendar.getInstance();
to.set(Calendar.DAY_OF_MONTH, 31);
to.set(Calendar.MONTH, 9);
to.set(Calendar.YEAR, 2013);
to.set(Calendar.HOUR_OF_DAY, 23);
to.set(Calendar.MINUTE, 59);
to.set(Calendar.SECOND, 59);
// to.setTimeZone(TimeZone.getTimeZone("Asia/Aqtau"));
// System.out.println(TimeZone.getDefault().getID());
// System.out.println(Arrays.toString(TimeZone.getAvailableIDs()));
SimpleDateFormat dateformat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
dateformat.setTimeZone(TimeZone.getTimeZone("Asia/Aqtau"));
System.out.println(dateformat.format(to.getTime()));
}
Protože v prvním případě zadáváš ten čas pro časové pásmo Asia/Aqtau, ale vypisuješ místní (nebo možná letní UTC) čas. Ve druhém případě to děláš obráceně.
Kdyz bych vypisoval mistni, vypise to 31.10.2013 23:59:59 jako defaultni casovou zonu. Nebo jak jsi to myslel?
Proc jednou jsou pricteny 4 hodiny a jednou odecteny?
Prvý prípad: Keď je v Kazachstane 31.10.2013 23:59:59, tak u nás je o štyri hodiny menej (19:59:59).
Druhý prípad: Keď je u nás 31.10.2013 23:59:59, tak v Kazachstane je o štyri hodiny viac (03:59:59).
Chapu! Diky!