2012-03-25 13 views
35

Qualcuno può informi, qual è la differenza tra le due istruzioni seguenti:Differenza tra EST e America/New_York fusi orari

TimeZone.getTimeZone("America/New_York") 

e

TimeZone.getTimeZone("EST") 

In altre parole, il motivo per cui è EST diversa da America/New_York. Anche nella mia applicazione, per ottenere il fuso orario corrente negli Stati Uniti, dovrei usare America/New_York o EST.

risposta

47

EST è metà del fuso orario di New York, in modo efficace. È sempre in tempo standard - non ha la parte per l'ora legale. Non è in realtà un vero fuso orario a sé stante, IMO - è la parte "standard" di un fuso orario più completo. Quando si scrive su un fuso orario che è a un offset fisso e non correlato a un luogo particolare, preferirei usare "Etc/GMT + 5" o qualcosa di simile, ovviamente, risolto. (In genere non mi piace nemmeno "Eastern Time" e simili, poiché i diversi luoghi che osservano "Eastern Time" possono variare nelle loro transizioni DST. È un po 'come chiamare una codifica "ASCII esteso" ... ti dice alcune informazioni, ma non abbastanza.)

Quindi, se si vuole conoscere il reale ora locale per New York in qualsiasi istante particolare, utilizzare America/New_York.

In generale, stare lontano dalle abbreviazioni. Da the documentation:

Per compatibilità con JDK 1.1.x, alcuni altri ID fuso orario di tre lettere (come "PST", "CTT", "AST") sono supportati. Tuttavia, il loro utilizzo è deprecato perché la stessa abbreviazione viene spesso utilizzata per più fusi orari (ad esempio, "CST" potrebbe essere US "Central Standard Time" e "China Standard Time"), e la piattaforma Java può quindi riconoscere solo uno di loro.

(.. Personalmente mi piacerebbe anche vi consiglio di stare lontano da Date e Calendar, preferendo utilizzare Joda Time ove possibile Che è una questione diversa, però, in realtà)

+0

Penso che suggerire che non sia un fuso orario appropriato è fuorviante, poiché alcuni fusi orari non hanno divisioni DST/non-DST. I nomi come EST vengono usati per i fusi orari nautici o usano solo offset? –

+0

@JamesAylett: Pass. Spero davvero di no, dato che sono ambigui. (IIRC, CST è ambiguo tra "Central Standard Time" e "Central Summer Time in Australia, che è particolarmente inutile - anche se uno di quelli non è stato usato per molti anni.) Piacere di vederti, tra l'altro :) –

+2

@JamesAylett : Stavo suggerendo che non è un fuso orario appropriato non perché non osserva l'ora legale, ma perché è chiaramente parte di qualcosa che * fa * osserva l'ora legale, altrimenti la parte "standard" sarebbe ridondante. difficile anche nel 1969, quando si discostava dalla non ancora esistente UTC :( –

60

EST è UTC - 5 ore. America/New_York è EST in inverno ed E * D * T in estate, quindi adesso New York è UTC - 4 ore.

+7

questo ha bisogno di molto, molto più upvotes. –