VB: Obtener la hora de un servidor de tiempo.
Resuelto
Anonyme209
Mensajes publicados
761
Estado
Miembro
-
cs_Le Pivert Mensajes publicados 8437 Estado Colaborador -
cs_Le Pivert Mensajes publicados 8437 Estado Colaborador -
Hola,
Programo en Visual Basic 2010.
Me gustaría poder sincronizar la hora del sistema con la hora de un servidor de tiempo web. Para modificar la hora del sistema, encontré "TimeString = "hh:mm:ss"", pero solo funciona en modo administrador. Y no sé cómo recuperar la hora de un servidor web.
Gracias por su ayuda.
Programo en Visual Basic 2010.
Me gustaría poder sincronizar la hora del sistema con la hora de un servidor de tiempo web. Para modificar la hora del sistema, encontré "TimeString = "hh:mm:ss"", pero solo funciona en modo administrador. Y no sé cómo recuperar la hora de un servidor web.
Gracias por su ayuda.
12 respuestas
-
Hola,
Mira esto:
https://codes-sources.commentcamarche.net/source/100641-obtenir-l-heure-du-jour-depuis-le-web-en-vb-net?utm_source=greenarrow&utm_campaign=&utm_medium=mail
--
@+ El Pájaro Huésped -
Gracias, voy a utilizar el código del proyecto y adaptarlo para mi programa.
Si no es demasiado pedir, hay tres puntos más que podrían serme útiles:
- Recuperar la fecha de Internet (debería poder arreglármelas solo)
- Detectar automáticamente si estamos en horario de verano o en horario de invierno.
- Modificar la hora del sistema sin iniciar en modo admin (no creo que sea posible, pero pregunto de todos modos)
Gracias por tu ayuda. -
Para el primer punto, hay que cambiar la dirección:
dirección = "https://ntp.alapetite.fr/date.txt.php"
y luego en Private Sub Timer1_Tick:
Dim s As String = texte 'manipulación de cadenas de caracteres Dim separador As Char = CChar("T") Dim nom() As String nom = s.Split(separador) lbldate.Text = nom(0)
para el segundo punto, busca en la manipulación de cadenas de caracteres para encontrar el 2
El tercer punto no lo sé, habrá que hacer una nueva publicación.
Buena programación
--
@+ El Pivert -
Hola,
Gracias por tu ayuda.
Sé que modificar el 2 por 1 en la dirección permite mostrar la hora de verano y la hora de invierno a elección.
Lo que quisiera es detectar automáticamente si es necesario poner un 2 o un 1. -
Hay que mirar en el calendario el paso de la hora de verano a la hora de invierno y viceversa y con la fecha que recuperas en lbldate.Text basta con hacer un If
El cambio es el 26-10-2014 así que:
If lbldate.Text = 26/10/2014 Then'habría que ver el formato de la Fecha y corregir si es necesario adress = "http://www.Heure.com/heure-fr.php?timezone=1&size=36" End If
No es más complicado que eso
--
@+ El Piabe -
Hola,
Gracias por la respuesta, pero hay un pequeño problema:
Solo funciona para el cambio a la hora de invierno de 2014.
Me gustaría que funcionara todo el tiempo.
(Por ejemplo, ver en el calendario el cambio de hora de verano a hora de invierno directamente en vb) -
Para eso hay que mirar los números de semana, creo que siempre son las mismas semanas: el último domingo de marzo (14) y de octubre (44). Así que hay que hacer una búsqueda para encontrar el número de la semana que se guardará en una variable (masemaine) que se inscribirá al abrir la aplicación. Luego, al abrirla, simplemente hay que hacer:
Si masemaine = 14 entonces
cambiamos la hora
fin si
Te dejo a ti la tarea de buscar en Google cómo encontrar el número de la semana actual en VB.NET
Esto cambiará el lunes, luego podemos afinar con las fechas. Tú decides
--
@+ El Pivert -
Muchas gracias,
debería poder arreglármelas con eso. -
He encontrado una fuente en VB6 para encontrar los días de los cambios de hora. La he adaptado a VB.Net, si te interesa, podrás integrarla en tu programa.
En un Form pon un Button y 2 Label, aquí está el código con el enlace de la fuente en VB6:
Option Strict On Public Class Form1 'http://codes-sources.commentcamarche.net/source/24735-calcul-du-decalage-heure-ete-hiver-en-fonction-d-une-date Dim seuilete As Date Dim seuilhiver As Date Dim dteData As Date Dim iddate As String Dim jour As Integer Dim uneDateC As Decimal 'número de días desde el comienzo del año Dim seuileteC As Decimal 'día comienzo del año hora de verano Dim seuilhiverC As Decimal 'día comienzo del año hora de invierno Dim DateS As String Dim DateD As DateTime Dim Annee As String Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'actualización de las fechas dteData = Now 'hoy Annee = (dteData.ToString("yyyy")) 'año en curso 'uneDate = CDate(TextBox1.Text) iddate = "25/03/" & Annee & " 02:00:00" 'es el 25 de marzo del mismo año seuilete = CDate(iddate) jour = Weekday(seuilete, vbMonday) '¿cuántos días antes de alcanzar el próximo domingo? iddate = (32 - jour) & "/03/" & Annee & " 02:00:00" seuilete = CDate(iddate) Label1.Text = "hora de verano: " & Format(seuilete, "dddd d MMM yyyy") '---------------------------------------------------------------------- 'igual pero para la hora de invierno 'es el 25 de octubre del mismo año iddate = "25/10/" & Annee & " 02:00:00" seuilhiver = CDate(iddate) jour = Weekday(seuilhiver, vbMonday) '¿cuántos días antes de alcanzar el próximo domingo? iddate = (32 - jour) & "/10/" & Annee & " 02:00:00" seuilhiver = CDate(iddate) Label2.Text = "hora de invierno: " & Format(seuilhiver, "dddd d MMM yyyy") '-------------------------------------------------------------------- 'una pequeña comparación DateS = ("01/01/" & Annee) 'Ingresar una fecha: obtenemos una cadena DateD = CDate(DateS) 'Conversión de la cadena a DateTime uneDateC = DateDiff(DateInterval.Day, DateD, Now) MsgBox("Hoy " & uneDateC & " días desde el comienzo del año") seuileteC = DateDiff(DateInterval.Day, DateD, seuilete) 'diferencia en días desde el comienzo del año a la hora de verano MsgBox("La hora de verano está a " & seuileteC & " días desde el comienzo del año") seuilhiverC = DateDiff(DateInterval.Day, DateD, seuilhiver) 'diferencia en días hora de invierno al final del año MsgBox("La hora de invierno está a " & seuilhiverC & " días desde el comienzo del año") If (seuileteC < uneDateC) And (uneDateC < seuilhiverC) Then MsgBox("Estamos en hora de verano") Else MsgBox("Estamos en hora de invierno") End If End Sub End Class
Buena programación
--
@+ El Pivert -
He hecho una actualización si te interesa
https://codes-sources.commentcamarche.net/source/100641-obtenir-l-heure-du-jour-depuis-le-web-en-vb-net
--
@+ El Pájaro Picador -
-
Me diste la idea de hacer un software de evaluación a tiempo limitado basado en la fecha de la web. Si te interesa:
https://codes-sources.commentcamarche.net/source/100652-logiciel-d-evaluation-a-duree-determinee
Atentamente
--
@+ El Pájaro Carpintero