2010-02-18 12 views
45

In .NET, le seguenti affermazioni tornare diversi valori:differenza tra UTC e GMT Standard Time in .NET

Response.Write(
    TimeZoneInfo.ConvertTime(
    DateTime.Parse("2010-07-01 5:30:00.000"), 
    TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"), 
    TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time")) 
); 
// displays 7/1/2010 1:30:00 PM 

..e questo ...

Response.Write(
    TimeZoneInfo.ConvertTime(
    DateTime.Parse("2010-07-01 5:30:00.000"), 
    TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"), 
    TimeZoneInfo.FindSystemTimeZoneById("UTC")) 
); 
// displays 7/1/2010 12:30:00 PM 

Perché è questo? Pensavo che l'ora universale UTC e GMT fossero equivalenti.


Aggiornamento

Su ulteriore test, trovo che il seguente sembrano come equivalenti:

"UTC"

"Greenwich Mean Time"

"Stand Marocco ard Time"

considerando che, il seguente è diverso durante i mesi estivi:

"GMT Standard Time"

Forse la mia domanda dovrebbe essere, perché sono "Greenwich Mean Time" e "GMT Standard Time" diverso?

End Modifica

+3

Non sei il solo ad essere confuso: http://connect.microsoft.com/VisualStudio/feedback/details/298123/timezoneinfo-believes-that-gmt-daylight-time-exists-but-there-is-no -such-thing –

+2

Il collegamento per la connessione è morto –

risposta

31

GMT fa non regolare per Daylight saving time (DST). Lo si può sentire dalla bocca del cavallo in questa web site.

aggiungere questa riga di codice per vedere la fonte del problema:

Console.WriteLine(TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time").SupportsDaylightSavingTime); 

uscita: Vero.

Questo non è un problema di .NET, è Windows incasinato. La chiave di registro utilizzata da TimeZoneInfo è HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Fusi orari \ GMT Standard Time. Faresti meglio a restare con UTC.

+1

Interessante ... mentre TimeZoneInfo.FindSystemTimeZoneById ("Greenwich Standard Time") restituisce false, come in UTC. – frankadelic

+9

Non penso che Windows stia rovinando, è solo una confusione terminologica. Stanno usando GMT per riferirsi al fuso orario che include Dublino, Edimburgo, Lisbona, Londra, tra gli altri, e quelli ** fanno ** usano l'ora legale. –

+0

@HansPassant Puoi per favore indicare dove http://wwp.greenwichmeantime.com/what-is-gmt.htm afferma che GMT non si aggiusta per l'ora legale (che a mio avviso implica l'UTC)? Lo avevo pensato anch'io - che GMT si adatta a DST e UTC no, ma ora non ne sono convinto. La mia attuale comprensione è che GMT e UTC sono a loro volta fissi e che i fusi orari sono riflessi come offset per quello e l'ora legale è un ulteriore adeguamento a quel tempo fisso. In altre parole, GMT è GMT e se ci si trova in una zona in cui si osserva l'ora legale, ciò si riflette come GMT +/- offset del fuso orario e la regolazione dell'ora legale. – Matt

0

Ecco una discussione di Coordinated Univeral Timezones. Sembra che l'UTC venga solitamente utilizzata quando è necessaria un'alta precisione per il periodo di tempo. Greenwhich Meantime è abbastanza vicino e viene utilizzato avanti e indietro con UTC.

Spero che questo aiuti alcuni.

+2

GMT (Greenwich Mean Time) è largamente utilizzato in questi giorni e per i casi di standard internazionali o globali, dovrebbe essere normalmente sostituito con UTC, tranne che per il "tempo standard" all'interno del UK. – mctylr

13

La differenza è la seguente:

  • Greenwich Mean Time (GMT) è un termine originariamente riferimento a significare tempo solare del Royal Observatory a Greenwich, Londra. mentre
  • Coordinated Universal Time (UTC) (francese: Temps Universel Coordonné) è uno standard tempo in base sul tempo atomico internazionale (TAI) con salto secondi aggiunti al intervalli irregolari per compensare la rotazione rallentamento della terrestre
  • Day Light Saving Time (DST) su l'altra mano è orologi di anticipo A e per con cambi di stagione, Per sfruttare al massimo la luce del giorno .

    "It is observed in many countries but not all". Potrebbe essere variabile, poiché la scorsa estate alcuni paesi come il Pakistan hanno deciso di riportare gli orologi un mese più tardi di quanto non facciano normalmente.

  • World Time Zones è una buona risorsa per informazioni aggiornate su in tutto il mondo.

Spero che questo aiuti

+1

Ti consiglio di riformattare la tua risposta perché, nel modo in cui viene presentata, il lettore potrebbe pensare che GMT, UTC e DST siano analoghi nel loro significato. GMT e UTC sono analoghi ma DST no. – Matt

20

[SONO davvero solo il backup fino risposta di Hans Passant]

Non mi sembra di essere una confusione sopra l'uso del termine "GMT", che sembra essere usato per significare "Greenwich Mean Time" e anche il fuso orario utilizzato nel Regno Unito/Irlanda - che si inverte tra GMT in inverno e estate britannica in estate e non sembra avere un nome ben definito a sé stante!

Per confondere ancora di più, ho eseguito il codice di esempio da MSDN docs for TimeZoneInfo.GetSystemTimeZones e ho esaminato l'output.

sono stato molto sorpreso di vedere la seguente definizione del "GMT Standard Time" fuso orario

 
ID: GMT Standard Time 
    Display Name: (UTC) Dublin, Edinburgh, Lisbon, London 
    Standard Name:      GMT Standard Time 
    Daylight Name:      GMT Daylight Time ***Has Daylight Saving Time*** 
    Offset from UTC:      0 hours, 0 minutes 
    Number of adjustment rules:       1 
    Adjustment Rules: 
     From 01/01/0001 00:00:00 to 31/12/9999 00:00:00 
     Delta: 01:00:00 
     Begins at 01:00 on Sunday of week 5 of March 
     Ends at 02:00 on Sunday of week 5 of October 

Sembra (almeno a me) che chi era incaricato di definire fusi orari in Microsoft ha veramente infangato il acque ancora più lontano qui.

Ovviamente volevano descrivere il fuso orario in uso nel Regno Unito/Irlanda ma gli hanno fornito un ID che includeva i termini "GMT" e UTC nell'ID e il nome visualizzato. Sono abbastanza fiducioso sul fatto che questa definizione del fuso orario (qualunque cosa debba essere chiamata) è non UTC. Potrebbe essere che le volte sono molto simili a UTC per metà dell'anno, ma questo è tutto!

+0

Una sostanziale minoranza di la gente in Gran Bretagna pensa che * GMT * significhi tempo dell'orologio da muro in cui vivono, in altre parole, che si sposta in avanti per l'estate. Sono semplicemente sbagliati. Ma per accogliere questo equivoco diffuso, mia moglie, quando organizza eventi di gioco online, specifica * Ora del Regno Unito * non * GMT * o * BST *. – BoarGules

1

L'oggetto TimeZoneInfo con lo .Id di "GMT Standard Time" corrisponde allo .DisplayName di "(UTC) Dublin, Edinburgh, Lisbon, London".

Questo fuso orario utilizza Greenwich Mean Time (GMT) (UTC + 0) durante i mesi invernali e British Summer Time (BST) (UTC + 1) durante i mesi estivi.

Reference here.

Il fuso orario per UTC ha uno .Id di "UTC" e uno .DisplayName di "(UTC) Coordinated Universal Time".

Sono due diverse impostazioni del fuso orario.

Inoltre, se si guarda l'elenco dei nomi di visualizzazione fuso orario in Windows:

Time Zone List

Il valore tra parentesi è solo il standard di offset, così mentre sembra che ci sono quattro diversi impostazioni per UTC, ce n'è davvero solo una. È solo che le altre tre zone utilizzano l'UTC come offset di base quando l'ora legale non è attiva.

11

Questa è una risposta tardiva che è improbabile che l'intervistatore originale legga ma che le persone che google per questo argomento potrebbero trovare.

I nomi GMT standard Tempo e GMT Daylight Time sono sconosciuti al di fuori di Redmond. Sono animali mitici che appaiono solo nel bestiario chiamato Registro di Windows. Nel mondo reale, in inverno il Regno Unito osserva GMT (Greenwich Mean Time) e in estate osserva BST (British Summer Time). La BST è di 1 ora in avanti (est) di GMT. Gli europei di solito non parlano di "ora legale" ma di "ora legale", almeno nelle lingue che conosco.

Un intervistato ha detto si dovrebbe usare UTC a preferenza di GMT. Questo consiglio, dell'International Astronomical Union, risale al 1935. Il suo punto era che, prima del 1925, GMT era conteggiato da mezzogiorno a mezzanotte, quindi anche se era 10 anni dopo, la possibilità di ambiguità poteva ancora persistere. Ma è un po 'obsoleto ora. Negli ultimi 80 anni i termini GMT e Universal Time sono stati quasi sinonimi. Non del tutto, ovviamente. Ma hai bisogno di un astronomo per spiegarti la differenza. Se sei preoccupato per ore, non secondi, probabilmente non ti interessa.

GMT parla di cronometraggio civile nei paesi di lingua inglese. Non è obsoleto. È sancito dalla legge nel Regno Unito, in Irlanda, in Canada, persino in Belgio.

I vari sapori del tempo universale riguardano il cronometraggio astronomico.

E il cronometraggio civile, penso, era di che si trattava la domanda originale.