Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Restar Días A Una Fecha
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Restar Días A Una Fecha 
 
Buenas,
pretendo restar días a una fecha y pensando que debería funcionar como por ejemplo Sql Server que puedes utilizar dateAdd con valores negativos para restarlos, pero siempre los añade.

DateAdd(dFecha, gb.Day, -30)

Gracias.
 



 
calcena - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Restar Días A Una Fecha 
 
calcena escribió:  
Buenas,
pretendo restar días a una fecha y pensando que debería funcionar como por ejemplo Sql Server que puedes utilizar dateAdd con valores negativos para restarlos, pero siempre los añade.

DateAdd(dFecha, gb.Day, -30)

Gracias.


Hola, calcena

Te pongo un ejemplo:

   ' Le paso 01/07/2020 hago dos conversiones en este ejemplo, primero a String y después convierto este String a fecha local ya que DateAdd trabaja con fecha
   dtFechaUnoMes = Val("01/" & CStr(iLocalMes) & "/" & CStr(iAno))
   dtFechaFinMes = DateAdd(dtFechaUnoMes, gb.Day, -1) ' esto le va a restar un día a la fecha anterior y lo pondrá a 30/06/2020

Espero que esto te funcione, ya que a mi sí.

Saludos.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Restar Días A Una Fecha 
 
calcena:

Pues no sé por que no te funciona. No vas mal desencaminado.

Public Sub Main()
  
  Dim fechadehoy As Date
  Dim fechaanterior As Date
  
  fechadehoy = Date(Now)
  
  Print "Hoy es: " & Format(fechadehoy, "dd/mm/yyyy")
  
  Print "Restamos treinta días..."
  
  fechaanterior = DateAdd(fechadehoy, gb.day, -30)
  
  Print "Si restamos treinta días la fecha es: " & Format(fechaanterior, "dd/mm/yyyy")
  
End
 


Salida:

Citar:

Hoy es: 05/07/2020
Restamos treinta días...
Si restamos treinta días la fecha es: 05/06/2020


¿ Lo convertiste a tipo fecha ?.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Restar Días A Una Fecha 
 
Supongamos que queremos restar 10 minutos a una fecha definida.


Public Sub Ejemplo2()
  
  Dim fechadefinida As Date
  Dim fechafinal As Date  
  
  fechadefinida = Date(2020, 06, 20, 0, 5, 0, 0)
  
  Print "La fecha definida es: " & Format(fechadefinida, "dd/mm/yyyy hh:nn:ss")
  
  fechafinal = DateAdd(fechadefinida, gb.Minute, -10)
  
  Print "Restamos diez minutos..."
  
  Print "La fecha final es: " & Format(fechafinal, "dd/mm/yyyy hh:nn:ss")
  
End
 


Resultado:

Citar:

La fecha definida es: 20/06/2020 00:05:00
Restamos diez minutos...
La fecha final es: 19/06/2020 23:55:00


Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Restar Días A Una Fecha 
 
Gracias a todos,
finalmente he hecho una cosa muy similar a lo que habéis propuesto. he tirando de la creación de una clase helper para la conversión y después si que me ha funcionado.

Por cierto gambafeliz, prueba tu ejemplo con un valor de días superior a 12, pruebalo con una fecha por ejempolo 15/07/2020 verás que no funciona justamente por lo que comentan los compañeros el formato es MM/DD/YYYY al menos cuando como yo, utitlizas un DateBox.


Saludos.
 



 
calcena - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Restar Días A Una Fecha 
 
calcena escribió:  
Gracias a todos,
finalmente he hecho una cosa muy similar a lo que habéis propuesto. he tirando de la creación de una clase helper para la conversión y después si que me ha funcionado.

Por cierto gambafeliz, prueba tu ejemplo con un valor de días superior a 12, pruebalo con una fecha por ejempolo 15/07/2020 verás que no funciona justamente por lo que comentan los compañeros el formato es MM/DD/YYYY al menos cuando como yo, utitlizas un DateBox.


Saludos.


calcena no se a que te refieres, yo lo he probado y si me va. Eso si, no he probado el caso que me has planteado. Y es verdad que no pruebo casos como tu me has indicado. DateAdd solo lo uso para restar 1 día y poco más. Te sugiero que veas hilos donde yo discuto justo problemas como los que planteas, y normalmente lo hago con Shordi. Donde el me insiste que las fechas son número y como tal se deben tratar.

Me gustaría que me des con más exactitud tu opinión sobre justo lo que has escrito arriba y así mirarlo juntos. Yo ya me queme el coco en su día por temas como estos y en fin, creía que ya lo tenia claro, este tema. De echo incluso todo me funciona muy bien en mi aplicación.

Bueno ya me cuentas, saludos.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Restar Días A Una Fecha 
 
gambafeliz escribió:  
calcena escribió:  
Gracias a todos,
finalmente he hecho una cosa muy similar a lo que habéis propuesto. he tirando de la creación de una clase helper para la conversión y después si que me ha funcionado.

Por cierto gambafeliz, prueba tu ejemplo con un valor de días superior a 12, pruebalo con una fecha por ejempolo 15/07/2020 verás que no funciona justamente por lo que comentan los compañeros el formato es MM/DD/YYYY al menos cuando como yo, utitlizas un DateBox.


Saludos.


calcena no se a que te refieres, yo lo he probado y si me va. Eso si, no he probado el caso que me has planteado. Y es verdad que no pruebo casos como tu me has indicado. DateAdd solo lo uso para restar 1 día y poco más. Te sugiero que veas hilos donde yo discuto justo problemas como los que planteas, y normalmente lo hago con Shordi. Donde el me insiste que las fechas son número y como tal se deben tratar.

Me gustaría que me des con más exactitud tu opinión sobre justo lo que has escrito arriba y así mirarlo juntos. Yo ya me queme el coco en su día por temas como estos y en fin, creía que ya lo tenia claro, este tema. De echo incluso todo me funciona muy bien en mi aplicación.

Bueno ya me cuentas, saludos.


En este sentido opino como Shordi, realmente la fecha juliana no deja de ser en número  entero de días:

"La fecha juliana, día juliano o DJ (JD, por sus siglas en inglés) es el número de días y fracción transcurridos desde el mediodía del 1º de enero del año 4713 a. C."

una vez tienes esos números pues es restar sumar etc ...el tema viene como siempre pasa sobre todo en SQL que las fechas tienen formato:
Francés, Inglés, Español, con horas minutos segundos .... esto complica este paso a fecha juliana.

Para mi aplicación lo que me ha funcionado es lo siguiente:


 dTempFecha = DateAdd(mHelpers.getFechaMMDDYYYY(dbFechaAviso.Text), gb.Day, -Val(txtDiasAviso.Text))
 arrAlerta.Add(Format(dTempFecha, "dd/mm/yyyy"))



La función mHelpersgetFechaMMDDYYY():
Public Function getFechaMMDDYYYY(ByRef sParamInput As String) As String
  
  sParamInput = Mid(sParamInput, 4, 2) & "/" & Mid(sParamInput, 1, 2) & "/" & Mid(sParamInput, 7, 4)  
  Return sParamInput  
End


Saludos.
 



 
calcena - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Restar Días A Una Fecha 
 
calcena escribió:  

Para mi aplicación lo que me ha funcionado es lo siguiente:

 dTempFecha = DateAdd(mHelpers.getFechaMMDDYYYY(dbFechaAviso.Text), gb.Day, -Val(txtDiasAviso.Text))
 arrAlerta.Add(Format(dTempFecha, "dd/mm/yyyy"))


Voy a intentar entender tú código:
1era. linea:
Guardas en una variable de tipo Date, usas la función sumar Date donde tienes un modulo (mHelpers) con una función (getFecha) y le pasas supongo una fecha almacenada en una base de datos o manual (no se) y tampoco sé el formato, que te devuelve un Date en el formato MMDDYYYY(esto es lo que creía, pero he visto la función y devuelve String cosa que no entiendo porque no te da error por que DateAdd(Date,.....) y no String,  para después  restar x días de una caja de texto.
2a. linea: Guardas una cadena fecha tras convertirla desde un Date.

Opinión: Estas exactamente en los mismos problemas que yo ya tuve con las fechas y sinceramente lo estas resolviendo igual que yo. Incluso creé una clase llamada Fecha para resolver cada formato que tenia y tratarlo como a mi me interesaba. Osea, visualizar Fechas en pantalla con formato DD/MM/YYYY y lidiar con fechas MM/DD/YYYY así como trabajar de forma nativa con SQLite con sus formatos YYYY-MM-DD.

Por cierto esta anotación la tengo en mi código, por si te sirve de algo:
   ' Fecha según España: Día/Mes/Año
   ' Fecha según SQLite: Año-Mes-Día
   ' Fecha según Gambas: Día/Mes/Año pero al pasar a String es: Mes/Día/Año

calcena escribió:  

La función mHelpersgetFechaMMDDYYY():
Public Function getFechaMMDDYYYY(ByRef sParamInput As String) As String
  
  sParamInput = Mid(sParamInput, 4, 2) & "/" & Mid(sParamInput, 1, 2) & "/" & Mid(sParamInput, 7, 4)  
  Return sParamInput  
End

Saludos.

 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Cómo Poder Hacer Cálculo Que Indique Añ... kike1965 General 17 Lunes, 09 Noviembre 2015, 13:34 Ver último mensaje
kike1965
No hay nuevos mensajes Obtener Fecha Actual alessandri General 1 Jueves, 31 Agosto 2017, 13:53 Ver último mensaje
jguardon
No hay nuevos mensajes Necesito Asesoramiento, Quiero Hacer Un Ca... gambafeliz Controles/Librerías/Componentes 13 Sabado, 13 Julio 2019, 17:39 Ver último mensaje
gambafeliz
No hay nuevos mensajes Problemas Con Una Fecha [Solucionado] gambafeliz General 10 Jueves, 04 Junio 2020, 17:20 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron