C# Convertir hora de utc a local

raulsuances Seguir

Beta
Verificación en dos pasos desactivada
Desde
19 May 2016
Mensajes
52
Buenas,
Es normal que al convertir las horas de formato UTC a formato local te añada 1 segundo?
Tengo guardada una hora en la base de datos en formato UTC, al pasarlo a local en mi aplicación me añade un segundo, porque puede ser?
Un saludo
 

Feddy

Gamma
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
13 Dic 2013
Mensajes
368
Edad
33
podrias poner el codigo? es dificil asi a ciegas.

Le avisaste al dateTime que esta en formato UTC cuando lo extraes antes de convertir a ToLocalTime()?
 

drupalsito

Beta
Verificación en dos pasos desactivada
Desde
18 Ene 2017
Mensajes
141
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Pon el código, por allí vi uno en php en el foro stackoverflow

PHP:
 utcDate = DateTime.SpecifyKind(utcDate, DateTimeKind.Utc); var localTime = utcDate.ToLocalTime();
 
Última edición:

raulsuances

Beta
Verificación en dos pasos desactivada
Desde
19 May 2016
Mensajes
52
Veamos, voy a intentar explicarlo bien a ver si me podéis ayudar.

En mi aplicación tengo una especie de correo electrónico pero para procuradores.
En el cual tengo estados de mensaje que son, por ejemplo: cuando el mensaje se ha creado el estado del mensaje es creado, cuando el mensaje se ha leído por el destinatario el estado del mensaje es leído, cuando el mensaje se ha respondido el estado de mensaje será respondido...

Con ese estado de mensaje guardo la fecha, por ejemplo: cuando creo el mensaje guardo la fecha en la que he creado el mensaje.

Con esto que he explicado quiero decir que en la aplicación tengo algo tal que así:
estadosMensaje1.png

Fecha - Estado del mensaje

El problema es que a la hora de guardarlo en la base de datos me lo guarda así.
estadosMensaje2.PNG

F_ENVIO es la fecha del estado Creado
F_FIRMADO es la fecha del estado Firmado
F_SELLADO es la fecha del estado Sellado

En la base de datos me lo guarda en formato UTC (Estoy en España, -2 horas de la hora UTC).
Pero o a la hora de guardar en Base de datos me quita un segundo, o a la hora de mostrar en mi pagina me añade un segundo.

No entiendo el porque...

Para mostrar las fechas de UTC a formato local tengo el siguiente método.
Insertar CODE, HTML o PHP:
private static TimeZoneInfo timeZoneSpain = TimeZoneInfo.FindSystemTimeZoneById("Central Europe Standard Time");
private static TimeZoneInfo timeZoneUTC = TimeZoneInfo.FindSystemTimeZoneById("UTC");

public static DateTime DateUtcToNow(DateTime date)
        {
            ELogger.ELogger.LogMethodStart();

            ELogger.ELogger.LogDebug("Hora UTC: " + date);
            DateTime d = TimeZoneInfo.ConvertTime(date, timeZoneUTC, timeZoneSpain);
            d = Convert.ToDateTime(d, estfi);

            ELogger.ELogger.LogMethodEnd();
            return d;
        }

Muchas gracias por vuestra ayuda [MENTION=20896]freddy[/MENTION] y [MENTION=175236]drupalsito[/MENTION]
 

drupalsito

Beta
Verificación en dos pasos desactivada
Desde
18 Ene 2017
Mensajes
141
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Veamos, voy a intentar explicarlo bien a ver si me podéis ayudar.

En mi aplicación tengo una especie de correo electrónico pero para procuradores.
En el cual tengo estados de mensaje que son, por ejemplo: cuando el mensaje se ha creado el estado del mensaje es creado, cuando el mensaje se ha leído por el destinatario el estado del mensaje es leído, cuando el mensaje se ha respondido el estado de mensaje será respondido...

Con ese estado de mensaje guardo la fecha, por ejemplo: cuando creo el mensaje guardo la fecha en la que he creado el mensaje.

Con esto que he explicado quiero decir que en la aplicación tengo algo tal que así:
Ver el archivo adjunto 100243

Fecha - Estado del mensaje

El problema es que a la hora de guardarlo en la base de datos me lo guarda así.
Ver el archivo adjunto 100244

F_ENVIO es la fecha del estado Creado
F_FIRMADO es la fecha del estado Firmado
F_SELLADO es la fecha del estado Sellado

En la base de datos me lo guarda en formato UTC (Estoy en España, -2 horas de la hora UTC).
Pero o a la hora de guardar en Base de datos me quita un segundo, o a la hora de mostrar en mi pagina me añade un segundo.

No entiendo el porque...

Para mostrar las fechas de UTC a formato local tengo el siguiente método.
Insertar CODE, HTML o PHP:
private static TimeZoneInfo timeZoneSpain = TimeZoneInfo.FindSystemTimeZoneById("Central Europe Standard Time");
private static TimeZoneInfo timeZoneUTC = TimeZoneInfo.FindSystemTimeZoneById("UTC");

public static DateTime DateUtcToNow(DateTime date)
        {
            ELogger.ELogger.LogMethodStart();

            ELogger.ELogger.LogDebug("Hora UTC: " + date);
            DateTime d = TimeZoneInfo.ConvertTime(date, timeZoneUTC, timeZoneSpain);
            d = Convert.ToDateTime(d, estfi);

            ELogger.ELogger.LogMethodEnd();
            return d;
        }

Muchas gracias por vuestra ayuda [MENTION=20896]freddy[/MENTION] y [MENTION=175236]drupalsito[/MENTION]

supongo que los segundos es porque no se guardan al mismo tiempo, es como que espera su turno de un segundo para guardarse y así se refleja, ahora lo del utc ya quedó?
 

raulsuances

Beta
Verificación en dos pasos desactivada
Desde
19 May 2016
Mensajes
52
Buenas [MENTION=175236]drupalsito[/MENTION]
Te escribo para decirte que no conseguí solucionar el problema, pero que lo arregle haciendo un poco de trampas. Quitándote 1 segundo :)
Un saludo
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba