C sharp - Reloj en formulario

 
Vista:
sin imagen de perfil
Val: 23
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Reloj en formulario

Publicado por Mendizalea (14 intervenciones) el 05/06/2018 11:06:35
Buenos dias,

Como podría mostrar la hora actual en un formulario con los milisegundos incluidos?

Tengo el siguiente metodo pero no consigo ver los milisegundos:

1
2
3
4
5
6
7
8
9
10
11
private string InternetTime()
{
    var myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.microsoft.com");
    var response = myHttpWebRequest.GetResponse();
    string todaysDates = response.Headers["date"];
    DateTime dateTime = DateTime.ParseExact(todaysDates, "ddd, dd MMM yyyy HH:mm:ss 'GMT'", CultureInfo.InvariantCulture.DateTimeFormat, DateTimeStyles.AssumeUniversal);
    string Time = String.Format("{0:HH:mm:ss.fff}", dateTime);
    response.Close();
 
    return Time;
}

Lo actualizo con un Timer cada X milisegundos pero siempre muestra los milisegundos como 0.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Reloj en formulario

Publicado por Cristian Saavedra (13 intervenciones) el 05/06/2018 21:59:24
Buenas, mira me parece raro la siguiente linea de codigo:
1
DateTime dateTime = DateTime.ParseExact(todaysDates, "ddd, dd MMM yyyy HH:mm:ss 'GMT'", CultureInfo.InvariantCulture.DateTimeFormat, DateTimeStyles.AssumeUniversal);
Si te fijas en el parse que estas haciendo solo le indicas el dia, mes, año , hora minutos y segundos pero en ningun momento milisegundos.
Si deseas agregar milisegundos deberias intentar algo así:

1
dd MMM yyyy HH:mm:ss.fff

La letra F representan los milisegundos, podrías probar con ello y nos cuentas. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 23
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Reloj en formulario

Publicado por Mendizalea (14 intervenciones) el 06/06/2018 00:36:23
Muchas gracias por la respuesta.

Me dice lo siguiente:

1
System.FormatException: 'No se puede reconocer la cadena como valor DateTime válido.'

Entonces que no devuelve los milisegundos el WebRequest.

Conoceis alguna otra forma de hacerlo?

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 218
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Reloj en formulario

Publicado por Cesar (82 intervenciones) el 06/06/2018 01:19:41
Hola.

No. Quien no devuelve los milisegundos, es el servidor que estas consultando:

¿Que hora quieres mostrar?, ¿La hora del equipo del usuario?, ¿La hora del servidor?, ¿O la hora de tu pais?, ¿Porque consultas la hora del sitio web de Microsoft?

- Si deseas mostrar la hora del equipo actual, basta con obtener DateTime.Now
- Si deseas mostrar la hora de tu pais, puedes consultar un servidor NTP (https://stackoverflow.com/questions/1193955/how-to-query-an-ntp-server-using-c, http://www.pool.ntp.org/es)

1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 23
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Reloj en formulario

Publicado por Mendizalea (14 intervenciones) el 06/06/2018 10:48:39
Muchas gracias por la respuesta.

La finalidad es mostrar un reloj en el formulario con los milisegundos incluidos.

No tiene porque ser desde Microsoft, lo que si necesito es que todos los usuarios tengan la misma hora, por eso lo cogia de Microsoft, pero me sirve igualmente un NTP como me pusiste.

He probado con lo que has puesto y recojo la hora correctamente con los milisegundos pero después tengo un problema a la hora de mostrar el reloj.

Tengo un Timer con el cual actualizo la hora cada 222 milisegundos:

1
2
hora = hora.ToUniversalTime().AddMilliseconds(222);
 LblHour.Text = hora.ToString("HH:mm:ss.fff");

Pero según pasan los minutos se va retrasando con la hora real, por cada minuto igual se retrasa sobre 5 segundos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar