0
Answer

PDAs hour update failed

Iraitz

Iraitz

15y
2.3k
1
Hello everybody.

Firstly i would say sorry for my english low level.

I'm trying update a PDA's date synchronizing with a server. To do that, I have created a program with c#.Apparently my program it's ok, but after doing a hard reset, if I execute the program, without change anything, the hour, year, month, day and minutes updates well, but the hour no. Else, if I change the hour (any change) after doing a hard reset and before execute the program, the hour updates ok. I would like that the hour will update whithout need to do changes before the execute.

this is the code of my program:


/////Function thas start the updating/////
private void ActualizarFecha()
        {
            try
            {
               
                DateTime fechaServidor = this.Servidor.fFechaServidor();

                Utiles.ActualizarFecha(fechaServidor);

              
            }
            catch
            {
                TLog.AddError("Error al actualizar la fecha/hora de la maquina");
            }
        }

/////Servidor/////
public override DateTime fFechaServidor()
        {
            String strSQL;
            System.DateTime result = System.DateTime.UtcNow;

            strSQL = "SELECT getutcdate() AS fecha";
            _cmSQL.CommandText = strSQL;
            this._drSQL = _cmSQL.ExecuteReader();
            if (this._drSQL.Read())
            {
                result = Convert.ToDateTime(this._drSQL["fecha"]);
            }
            this._drSQL.Close();

            return result;
        }

/////Utiles/////
public static void ActualizarFecha(System.DateTime paramFecha)
        {
#if PDA
            SystemTime st = new SystemTime();

            GetSystemTime(ref st);
            st.wYear = Convert.ToUInt16(paramFecha.Year);
            st.wMonth = Convert.ToUInt16(paramFecha.Month);
            st.wDay = Convert.ToUInt16(paramFecha.Day);
            st.wHour = Convert.ToUInt16(paramFecha.Hour);
            st.wMinute = Convert.ToUInt16(paramFecha.Minute);
            st.wSecond = Convert.ToUInt16(paramFecha.Second);
            st.wMilliseconds = Convert.ToUInt16(paramFecha.Millisecond);
            SetSystemTime(ref st);
#endif
}

Before doing a hard reset, the date in the PDA is 01 September 2007, 0:00. But when I debug my program, System.DateTime.UtcNow sometimes(usually at mornings) returns 01/09/07 8:xx:xx and sometimes(usually at afternoons) 31/08/2007 23:xx:xx. And GetSystemTime(ref st) sometimes returns st.wYear=2007, st.wMonth=9, st.wDay=1 and st.wHour=8, and other times st.wYear=2007, st.wMonth=8, st.wDay=31 and st.wHour=23. And although I change the values of st, SetSystemTime(ref st) don´t update well the PDA's hour.

Someone knows why happens this? And how can I solve the problem?

My PDA is a HP iPAQ 214 with windows mobile 6.

Thank you very much.