Foros del Web » Programación para mayores de 30 ;) » .NET »

Restarle HORAS a una FECHA

Estas en el tema de Restarle HORAS a una FECHA en el foro de .NET en Foros del Web. Hola amigos, le comento mi problemita, tengo mi sistema trabajando bien en mi PC, dentro de él genero la fecha actual con Date.Today , sin ...
  #1 (permalink)  
Antiguo 10/01/2008, 14:38
Avatar de magosc  
Fecha de Ingreso: diciembre-2006
Mensajes: 72
Antigüedad: 17 años, 4 meses
Puntos: 0
Restarle HORAS a una FECHA

Hola amigos,
le comento mi problemita, tengo mi sistema trabajando bien en mi PC, dentro de él genero la fecha actual con Date.Today, sin embargo al subir mi aplicacion al servidor q por cierto es de españa, obviamente cambia de hora y por lo tanto no coincide el cambio de hora de españa con el de centro america...
Asi q mi primer opcion, pienso, seria restar las 7 horas q españa lleva adelantado, el detalle esque no se como... Acepto sugerencias....

He estado investigando unas cuestiones, que supuestamente podria modificar el arichivo Weg.config, para q no fuera afectado el horario de centro america con el de españa... pero no he entendido mucho...


Muchas gracias por la ayuda...
  #2 (permalink)  
Antiguo 10/01/2008, 15:06
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Re: Restarle HORAS a una FECHA

Mira, hice un proceso de más en las primeras dos lineas , espero esto te ayude (conforme a lo que pensaste del punto 1, esta hecho con C# si lo vas o lo estas haciendo con VB es muy sencillo ysar el DateDiff o algo asi se llama, te dejo el código para que lo pruebes y espero te sirva

Código:
            DateTime tiempo;
            DateTime.TryParse(DateTime.Today.ToString(), out tiempo);
            TimeSpan reloj;
            TimeSpan.TryParse(tiempo.TimeOfDay.ToString(), out reloj);
            TimeSpan.TryParse((reloj.Hours - 7) + ":" + reloj.Minutes + ":" + reloj.Seconds,out reloj);
            tiempo = tiempo.Subtract(reloj);
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #3 (permalink)  
Antiguo 10/01/2008, 18:50
Avatar de magosc  
Fecha de Ingreso: diciembre-2006
Mensajes: 72
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Restarle HORAS a una FECHA

Muchas Gracias erick_arcini...
pero no me funciono bien q se diga, tratare de detallar un poco mas mi problema
tengo mi aplicacion trabajando bien en el servidor (español) el detalle es... que yo necesito la fecha de aqui (centro america) solo fecha, pero como el servidor es de españa, la fecha me cambia 7 horas antes de lo que debe de ser, es decir, que si yo genero la fecha a partir de las 4 pm ya no es el dia de hoy sino de mañana... porq el servidor es de españa y alla si es mañana.... q trabalenguas...

no se si me explico....


Gracias de nuevo!!!
  #4 (permalink)  
Antiguo 11/01/2008, 09:46
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Tons como

Haber vamos a hablar con ejemplos que me agarraste en curva y a parte por andar jugando ayer Metal Gear toda la noche no he dormido nada, jajaja.

Supongamos o tienes un formulario de relleno, ese formulario te obtiene el Date.Today al momento de guardar, pero como el servidor esta en España te esta tomando la hora de España y no la de América (cualquier huso horario que uses) entonces lo que quieres es la fecha de registro de América (algo así como Date.Today.InAmerica )

Bueno, el código que te coloque lo que te hace es tomar el datetime (fecha y tiempo) del servidor, en este caso el de España y lo que hago es restar 7 horas del tiempo de españa, con esta linea de código

Código:
TimeSpan.TryParse((reloj.Hours - 7) + ":" + reloj.Minutes + ":" + reloj.Seconds,out reloj);
Lo que te va a hacer es que el lugar de tomar la fecha 11/01/2008 7:00:00 de España lo que te va a hacer es restar 7 horas (suponiendo que sabes cuanto tiempo es de diferencia, entonces el registro se guardaría con la fecha - 7 horas, por lo tanto la fecha te quedaría 11/01/2008 00:00:00 entonces esta fecha es la fecha de registro pero de tu huso horario americano Date.Today.InAmerica

Espero que sea eso lo que quieres, sino, detalla mucho más tu problema, con manzanas si es posible, para que pueda ayudarte mejor, que mi cafesito que me encuentro tomando no me esta ayudando para nada

Saludetes...
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #5 (permalink)  
Antiguo 11/01/2008, 21:56
Avatar de magosc  
Fecha de Ingreso: diciembre-2006
Mensajes: 72
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Restarle HORAS a una FECHA

Hola erick_arcini!!... de nuevo muchas gracias por tu ayuda....

Si pues eso es lo que quiero hacer, como tu lo haz dicho , solo se me habia escapado un detalle ... estoy trabajando en VB y lo q hice fue pasar ese codigo q me diste en C# a VB... (http://labs.developerfusion.co.uk/co...arp-to-vb.aspx) y cuando lo ejecuto en mi PC... simpre me da la fecha y al final la hora, PERO la hora no cambia de 07:00:00 y cuando lo subo al servidor.... me da casi lo mismo, solo q la hora la es siempre 00:00:00
Estoy pensando seriamente en hacer una gran funcion para eso... es decir, "hacerlo a pie" ya que trate de entender q hacia esto DateTime.TryParse pero nada... no le capte mucho

Muchas gracias amigo...
  #6 (permalink)  
Antiguo 12/01/2008, 11:16
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Re: Restarle HORAS a una FECHA

Cita:
Iniciado por magosc Ver Mensaje
Hola erick_arcini!!... de nuevo muchas gracias por tu ayuda....

Si pues eso es lo que quiero hacer, como tu lo haz dicho , solo se me habia escapado un detalle ... estoy trabajando en VB y lo q hice fue pasar ese codigo q me diste en C# a VB... (http://labs.developerfusion.co.uk/co...arp-to-vb.aspx) y cuando lo ejecuto en mi PC... simpre me da la fecha y al final la hora, PERO la hora no cambia de 07:00:00 y cuando lo subo al servidor.... me da casi lo mismo, solo q la hora la es siempre 00:00:00
Estoy pensando seriamente en hacer una gran funcion para eso... es decir, "hacerlo a pie" ya que trate de entender q hacia esto DateTime.TryParse pero nada... no le capte mucho

Muchas gracias amigo...
El TryParse intenta convertir una cadena de tiempo a un TimeSpan, con la ventaja es que si la riegas al pasar el tiempo te avisa que la estas defecando.

con lo que me explica de que usas VB, te recomiendo que para tus próximas dudas digas en que lenguaje estas programando por que su sintaxis es bastante diferente y los sistemas que te cambian de código a código son tremendamente torpes, a mi parecer claro esta

Mira, te dejo este código para ver si ahora si hace lo que necesitas

Código:

        Dim tiempo As DateTime = DateTime.Now
        Dim tiempo2 As DateTime = DateTime.Now
        Dim reloj As TimeSpan = tiempo.TimeOfDay
        reloj = reloj.Subtract(TimeSpan.Parse((reloj.Hours - 7) & ":" & reloj.Minutes & ":" & reloj.Seconds))
        tiempo = tiempo.Subtract(reloj)
        Label1.Text = tiempo2.ToString()
        Label2.Text = tiempo.ToString()
Yo lo probe en una aplicación de asp y todo va bien, ahora solo queda de ti aplicarlo como se debe
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #7 (permalink)  
Antiguo 12/01/2008, 12:33
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Re: Restarle HORAS a una FECHA

Si quieres restar 7 horas a aguna variable de tipo DateTime sólo tienes que usar el método adecuado:
Código:
DateTime hora = DateTime.Now.AddHours(-7);
Por otro lado, el soporte para zonas horarias en el BCL (en especial DateTime) es pobre, por lo cual sería conveniente que le des una mirada a http://www.codeplex.com/publicdomain.

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #8 (permalink)  
Antiguo 12/01/2008, 12:39
Avatar de magosc  
Fecha de Ingreso: diciembre-2006
Mensajes: 72
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Restarle HORAS a una FECHA


Excelente erick_arcini!!!!! siiii........ disculpas por lo del Lenguaje.....

Agradezco mucho tu ayuda......y la de todos.... Gracias!!!
  #9 (permalink)  
Antiguo 21/01/2008, 20:05
 
Fecha de Ingreso: febrero-2004
Mensajes: 11
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: Restarle HORAS a una FECHA

perfecto xknown esa funcion resta 7 horas a la hora actual, pero para afinarla un poco mas seria bueno utilizar la hora GMT.

Me explico, Perú (donde yo estoy) es GMT-5 y si voy a hospedarlo en un pais que es GMT+1 tendria que SUMARLE 6... pero que pasa si en el horario de verano ellos son GMT+2, tendria que estar actualizando mi función a cada rato...

Esto se soluciona usando la hora GMT

DateTime hora = DateTime.UtcNow.AddHours(-5);

Osea le he dicho que "hora" es el valor GMT que tenga el servidor -5, lo cual hace que cuando la hora del servidor cambie a GMT+2 en verano, yo no tenga que cambiar mi programa.

Espero les sirva. Saludos

PD: Ahora si lo que quieren es hacer una aplicación internacional, igual les recomiendo que trabajen con la hora GMT sin restarle nada, ni sumarle nada y que especifiquen que la aplicación tiene la hora GMT.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:41.