UTC a hora local incrementa 1 segundo

  • Autor Autor raulsuances
  • Fecha de inicio Fecha de inicio
R

raulsuances

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
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
 
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()?
 
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:
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.webp

Fecha - Estado del mensaje

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

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]
 
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ó?
 
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
 
Atrás
Arriba