Ho 2 computer diversi, ciascuno con TimeZone diverso.java.util.Date utilizza TimeZone?
In stampa System.currentTimeMillis()
un im computer, quindi stampa il seguente comando in entrambi i computer: System.out.println(new Date(123456));
-> 123456 indica il numero è venuto nel currentTimeMillis
nel computer # 1.
La seconda stampa (anche se digitata con hardcoded) genera stampe diverse, su entrambi i computer. perché è quello?
java.util.Date è solo un po 'indipendente dal fuso orario. Copia e incolla da Java SDK7 java.util.Date.toString() 'TimeZone zi = date.getZone(); if (zi! = Null) { sb.append (zi.getDisplayName (date.isDaylightTime(), zi.SHORT, Locale.US)); // zzz } else { sb.append ("GMT"); } '' date' è un 'BaseCalendar' il cui fuso orario è impostato su' TimeZone.getDefaultRef() ' –
Il punto chiave è che stai parlando del metodo toString(). Ho detto che non avevo guardato all'implementazione di toString(), ma sospettavo che riguardasse un calendario. L'hai appena confermato. Nessun disaccordo tra di noi. –
L'oggetto 'Date' funziona con un membro' cdate' (che è un 'BaseCalendar') con un fuso orario. E poi succedono cose alle quali nessuno importa davvero e 'Date' si comporta indipendente dal fuso orario finché non lo stampi. Non intendevo contraddire la tua risposta. –