|
Página 1 de 1
|
Autor |
Mensaje |
calcena ![Sexo: Masculino Sexo: Masculino](templates/default/images/gender_male.png)
Ingeniero Programador
![Ingeniero Programador Ingeniero Programador](images/ranks/rank_4.png)
Registrado: Julio 2016
Mensajes: 272
Edad: 47
|
![Mensaje Mensaje](templates/icy_phoenix/images/orange_blue/buttons/icon_post.gif) 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.
|
#1 Sabado, 04 Julio 2020, 23:13 |
|
![](templates/default/images/spacer.gif) |
gambafeliz ![Sexo: Masculino Sexo: Masculino](templates/default/images/gender_male.png)
Analista Programador
![Analista Programador Analista Programador](images/ranks/rank_5.png)
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
![Mensaje Mensaje](templates/icy_phoenix/images/orange_blue/buttons/icon_post.gif) 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.
|
#2 Domingo, 05 Julio 2020, 07:39 |
|
![](templates/default/images/spacer.gif) |
Shell ![Sexo: Masculino Sexo: Masculino](templates/default/images/gender_male.png)
Analista Programador
![Analista Programador Analista Programador](images/ranks/rank_5.png)
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: ![Al otro lado de la pantalla spain.png](images/flags/spain.png) Al otro lado de la pantalla
|
![Mensaje Mensaje](templates/icy_phoenix/images/orange_blue/buttons/icon_post.gif) Re: Restar Días A Una Fecha
calcena:
Pues no sé por que no te funciona. No vas mal desencaminado.
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"
|
#3 Domingo, 05 Julio 2020, 11:30 |
|
![](templates/default/images/spacer.gif) |
Shell ![Sexo: Masculino Sexo: Masculino](templates/default/images/gender_male.png)
Analista Programador
![Analista Programador Analista Programador](images/ranks/rank_5.png)
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: ![Al otro lado de la pantalla spain.png](images/flags/spain.png) Al otro lado de la pantalla
|
![Mensaje Mensaje](templates/icy_phoenix/images/orange_blue/buttons/icon_post.gif) 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"
|
#4 Domingo, 05 Julio 2020, 11:45 |
|
![](templates/default/images/spacer.gif) |
calcena ![Sexo: Masculino Sexo: Masculino](templates/default/images/gender_male.png)
Ingeniero Programador
![Ingeniero Programador Ingeniero Programador](images/ranks/rank_4.png)
Registrado: Julio 2016
Mensajes: 272
Edad: 47
|
![Mensaje Mensaje](templates/icy_phoenix/images/orange_blue/buttons/icon_post.gif) 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.
|
#5 Domingo, 05 Julio 2020, 12:27 |
|
![](templates/default/images/spacer.gif) |
gambafeliz ![Sexo: Masculino Sexo: Masculino](templates/default/images/gender_male.png)
Analista Programador
![Analista Programador Analista Programador](images/ranks/rank_5.png)
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
![Mensaje Mensaje](templates/icy_phoenix/images/orange_blue/buttons/icon_post.gif) 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.
|
#6 Domingo, 05 Julio 2020, 14:24 |
|
![](templates/default/images/spacer.gif) |
calcena ![Sexo: Masculino Sexo: Masculino](templates/default/images/gender_male.png)
Ingeniero Programador
![Ingeniero Programador Ingeniero Programador](images/ranks/rank_4.png)
Registrado: Julio 2016
Mensajes: 272
Edad: 47
|
![Mensaje Mensaje](templates/icy_phoenix/images/orange_blue/buttons/icon_post.gif) 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.
|
#7 Domingo, 05 Julio 2020, 14:39 |
|
![](templates/default/images/spacer.gif) |
gambafeliz ![Sexo: Masculino Sexo: Masculino](templates/default/images/gender_male.png)
Analista Programador
![Analista Programador Analista Programador](images/ranks/rank_5.png)
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
![Mensaje Mensaje](templates/icy_phoenix/images/orange_blue/buttons/icon_post.gif) 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.
|
#8 Domingo, 05 Julio 2020, 15:54 |
|
![](templates/default/images/spacer.gif) |
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
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
|
|
|
|
|