Pregunta

¿Por qué la función ToUniversalTime no tienen ningún efecto aquí;

DateTime dt = new DateTime(2009,3,24,1,0,0,DateTimeKind.Local);
dt = dt.ToUniversalTime(); // convert BST to UTC ?
dt.ToString();

"24/03/2009 01:00:00" ... mal?

Es lo mismo que ..

DateTime dt = new DateTime(2009,3,24,1,0,0,DateTimeKind.Utc);
dt = dt.ToUniversalTime(); // nothing to do, already utc
dt.ToString();

"24/03/2009 01:00:00" ... correcto.

que esperaba que haya un ajuste en el valor de ToString () del primer ejemplo, donde por la fecha y hora especificada como local resultaría en un cálculo de zona horaria correspondiente a la llamada a ToUniversalTime () y el tiempo en el Reino Unido deben tener resultó en "24/03/2009 00:00:00" como UTC.

Sin embargo, parece como la especificación de la DateTimeKind de esta manera renders ToUniversalTime o ToLocalTime incapaz de hacer ningún cálculo.

¿Fue útil?

Solución

¿Está usted en el Reino Unido, por casualidad? A pesar de que ahora estamos en el horario de verano, la fecha especificada en el código antes de que este se conmuta, por lo que la hora local y la hora UTC en el Reino Unido son los mismos. Si especifica abril como el mes, entonces usted verá una diferencia de una hora.

Otros consejos

Saludos David M. No tenía mi desayuno. De hecho, cuando repito la prueba con fechas que transcurren el umbral de hora de verano BST, el comportamiento es, por supuesto correcta.

 DateTime dt = new DateTime(2009,4,24,1,0,0,DateTimeKind.Local); 
 dt = dt.ToUniversalTime(); // convert BST to UTC ? 
 dt.ToString(); // "24/04/2009 00:00:00" ... correct 

Y para confirmar, el método ToString() parece salida en base a la propiedad Kind.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top