Diferencia entre hora estándar UTC y GMT en .NET

En .NET, las siguientes declaraciones devuelven valores diferentes:

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 

..y esto…

 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 

¿Por qué es esto? Pensé que UTC y GMT Standard Time son equivalentes.


Actualizar

Tras realizar más pruebas, me parece que lo siguiente parece ser equivalente:

“UTC”

“Meridiano de Greenwich”

“Hora estándar de Marruecos”

Mientras que, lo siguiente es diferente durante los meses de verano:

“Hora estándar GMT”

Tal vez mi pregunta debería ser, ¿por qué son diferentes “Greenwich Mean Time” y “GMT Standard Time”?

Fin de actualización

GMT no se ajusta para el horario de verano (DST). Puedes escucharlo desde la boca del caballo en este sitio web.

Agregue esta línea de código para ver el origen del problema:

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

Salida: Verdadero.

Esto no es un problema de .NET, es un error de Windows. La clave de registro que TimeZoneInfo usa es HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Time Zones \ GMT Standard Time. Será mejor que te quedes con UTC.

[Realmente estoy respaldando la respuesta de Hans Passant]

Me parece que hay una confusión sobre el uso del término “GMT” que parece usarse para indicar “Greenwich Mean Time” y también la zona horaria utilizada en el Reino Unido / Irlanda, que cambia entre GMT en invierno y en verano británico. en verano y no parece tener un nombre bien definido en sí mismo!

Para confundir las cosas aún más, ejecuté el código de muestra de los documentos de MSDN para TimeZoneInfo.GetSystemTimeZones y miré el resultado.

Me sorprendió mucho ver la siguiente definición de la zona horaria “GMT Standard Time”

 ID: hora estándar GMT
    Nombre para mostrar: (UTC) Dublin, Edinburgh, Lisbon, London
    Nombre estándar: GMT Standard Time
    Nombre de la luz del día: GMT Horario de verano *** Tiene horario de verano ***
    Desplazamiento de UTC: 0 horas, 0 minutos
    Número de reglas de ajuste: 1
    Reglas de ajuste:
       Del 01/01/0001 00:00:00 al 31/12/9999 00:00:00
       Delta: 01:00:00
       Comienza a la 01:00 del domingo de la semana 5 de marzo
       Termina a las 02:00 el domingo de la semana 5 de octubre

Parece (al menos para mí) que quien estuvo a cargo de definir las zonas horarias en Microsoft realmente ha enturbiado las aguas aún más aquí.

Obviamente, querían describir la zona horaria en uso en el Reino Unido / Irlanda, pero le dieron una identificación que incluía los términos “GMT” y UTC en la ID y el nombre para mostrar. Me siento bastante seguro de que esta definición de zona horaria (como se llame) no es UTC. Puede tener tiempos que son muy similares a UTC durante la mitad del año, ¡pero eso es todo!