Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
¿Como Formateo La Siguiente Fecha?
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje ¿Como Formateo La Siguiente Fecha? 
 
Hola,

Tengo estas fechas:

"8/2/19 10:00" = "d/m/yy hh:mm"
"8/12/19"         = "d/m/yy"

Yo necesito hacer: "yyyy/mm/dd hh:mm"

"2019/02/08 10:00"
"2019/12/08 00:00"

Como lo puedo hacer por código, que funciones o conversiones dispongo en gambas más apropiadamente.

Nota: Son cadenas de texto.

¿Quizás modifico todo según cadenas de texto y aplico reglas para rellenar los ceros?

Gracias por adelantado.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Como Formateo La Siguiente Fecha? 
 
Podes usar la función split en combinación con Format
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Como Formateo La Siguiente Fecha? 
 
tincho escribió: [Ver mensaje]
Podes usar la función split en combinación con Format
Saludos.


Me gusta tu idea tincho, Gracias eres un Sol

Ahora falta que me funcione para todos los casos.

Saludos.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Como Formateo La Siguiente Fecha? 
 

 
dim str1,str2 as string

str1 = Format(Val("8/2/19 10:00"), "yyyy/mm/dd hh:nn")

str2 = Format(Val("8/2/19"), "yyyy/mm/dd hh:nn")

end

 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Como Formateo La Siguiente Fecha? 
 
shordi escribió: [Ver mensaje]

 
dim str1,str2 as string

str1 = Format(Val("8/2/19 10:00"), "yyyy/mm/dd hh:nn")

str2 = Format(Val("8/2/19"), "yyyy/mm/dd hh:nn")

end


¿Sabes?, yo probé str1 = Format("8/2/19 10:00", "yyyy/mm/dd hh:mm")

Y me cascaba, pero seguro que es por que estaba mal, como veo en tu ejemplo.

Muchísimas gracias lo prueba y si pita bien ya te cuento.  
 



 
última edición por gambafeliz el Sabado, 24 Agosto 2019, 22:11; editado 1 vez 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Como Formateo La Siguiente Fecha? 
 
GambaFeliz:

Citar:

¿Sabes?, yo probé str1 = Format("8/2/19 10:00", "yyyy/mm/dd hh:mm")


Efectivamente. Lo mismo que estaba intentando hacer. No creía en principio que fuera necesario "Val".
Se me hacía raro que Format no entendiese el solo la cadena sin una conversión.

El error que da es:

Citar:

Type mismatch: wanted Float, got String instead


Las conversiones.  

La ayuda dice que Format puede:

Citar:

La función puede dar formato a días, tiempo, números, y monedas.


Pero no dice que a cadenas. Esta especificando los tipos arriba.

Entonces Val convierte esa cadena a una fecha. Probablemente Val lo convierta primero al formato mes-día-año y
luego se formatea al formato de fecha que queremos.

Mi fallo es que usando la función Now ya tengo la fecha actual y luego con format la formateaba como me gustaba a mi.
Now lógicamente da una fecha no es una cadena. Así que por eso se debe usar Val cuando queremos convertir de cadena a fecha.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Domingo, 25 Agosto 2019, 08:37; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Como Formateo La Siguiente Fecha? 
 
Shell escribió: [Ver mensaje]
GambaFeliz:

Citar:

¿Sabes?, yo probé str1 = Format("8/2/19 10:00", "yyyy/mm/dd hh:mm")


Efectivamente. Lo mismo que estaba intentando hacer. No creía en principio que fuera necesario "Val".
Se me hacía raro que Format no entendiese el solo la cadena sin una conversión.

El error que da es:

Citar:

Type mismatch: wanted Float, got String instead


Las conversiones.  

La ayuda dice que Format puede:

Citar:

La función puede dar formato a días, tiempo, números, y monedas.


Pero no dice que a cadenas. Esta especificando los tipos arriba.

Entonces Val convierte esa cadena a una fecha. Probablemente Val lo convierta primero al formato mes-día-año y
luego se formatea al formato de fecha que queremos.

Mi fallo es que usando la función Now ya tengo la fecha actual y luego con format la formateaba como me gustaba a mi.
Now lógicamente da una fecha no es una cadena. Así que por eso se debe usar Val cuando queremos convertir de cadena a fecha.

Saludos


Me gusta, joven, tu detallada explicación. Esta claro que shordi a dado la solución mejor para todos. tincho en mi particular dio la solución enrebezada propia para gente como yo y él mismo. Pero tu has dado la explicación más apropiada para terminar este hilo.

Por lo tanto creo que cuando un novato entre por este hilo lo tendrá muy claro con estas lineas de explicación.

Gracias, Shell y a todos.
 



 
última edición por gambafeliz el Domingo, 25 Agosto 2019, 09:11; editado 1 vez 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Como Formateo La Siguiente Fecha? 
 
Citar:
. Probablemente Val lo convierta primero al formato mes-día-año y
luego se formatea al formato de fecha que queremos.

No exactamente. Tenéis que tener en cuenta que las fechas son números y no tienen formato per se. Para verlas hay que convertirlas pero... ¿Qué fecha queremos ver, la que figura en la base de datos o nuestra fecha local equivalente?¿y qué fecha queremos grabar en la base de datos, la nuestra local o la fecha del servidor? Es decir, hay fechas absolutas (que sería directamente la que hay en la BD, sin más) y fechas relativas (que serían la traducción de esa fecha a nuestro horario local).
Si quiero saber a qué hora se subió un post a una Base de Datos y me dice que a las tres de la mañana ¿son las tres de la mañana mías o las de venezuela, por ejemplo, país del autor del post?
gambas contempla ambas posibilidades y nos facilita la labor... pero hay que entenderlo

Considedad éste código:
f = Val("18/2/19 00:00") 'devuelve 18/02/2019 00:00:00 como fecha
Str=str(f) 'devuelve "18/02/2019 00:00:00" Es decir, f convertida a cadena
Str=CStr(f) 'devuelve "02/17/2019 22:00:00" es decir: Hora UTC - localización (UTC+2=horario de verano en España. Al restar las dos horas, cambiamos de día)
f2 = CDate("2/18/19 00:00") 'devuelve 18/02/2019 02:00:00. Es decir: Hora UTC + localización.
 


Resumiendo:
Val y Str son inversas y manejan horas absolutas.
Cdate y Cstr son inversas y aplican los parámetros de Localización al valor recibido.

Saludos
 




===================
No podemos regresar
 
última edición por shordi el Domingo, 25 Agosto 2019, 09:55; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Como Formateo La Siguiente Fecha? 
 
shordi escribió: [Ver mensaje]
Citar:
. Probablemente Val lo convierta primero al formato mes-día-año y
luego se formatea al formato de fecha que queremos.

No exactamente. Tenéis que tener en cuenta que las fechas son números y no tienen formato per se. Para verlas hay que convertirlas pero... ¿Qué fecha queremos ver, la que figura en la base de datos o nuestra fecha local equivalente?¿y qué fecha queremos grabar en la base de datos, la nuestra local o la fecha del servidor? Es decir, hay fechas absolutas (que sería directamente la que hay en la BD, sin más) y fechas relativas (que serían la traducción de esa fecha a nuestro horario local).
Si quiero saber a qué hora se subió un post a una Base de Datos y me dice que a las tres de la mañana ¿son las tres de la mañana mías o las de venezuela, por ejemplo, país del autor del post?
gambas contempla ambas posibilidades y nos facilita la labor... pero hay que entenderlo

Considedad éste código:
f = Val("18/2/19 00:00") 'devuelve 18/02/2019 00:00:00 como fecha
Str=str(f) 'devuelve "18/02/2019 00:00:00" Es decir, f convertida a cadena
Str=CStr(f) 'devuelve "02/17/2019 22:00:00" es decir: Hora UTC - localización (UTC+2=horario de verano en España. Al restar las dos horas, cambiamos de día)
f2 = CDate("2/18/19 00:00") 'devuelve 18/02/2019 02:00:00. Es decir: Hora UTC + localización.
 


Resumiendo:
Val y Str son inversas y manejan horas absolutas.
Cdate y Cstr son inversas y aplican los parámetros de Localización al valor recibido.

Saludos


Polemico !!!!  Polemico !!!! Polemico !!!!   

     

Simplemente me encantó tu explicación. Magnific, si Sr.

Ahora el hilo esta feten.

Gracias

Nota: Perdón por mi lamentable inicio previo.  
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Como Formateo La Siguiente Fecha? 
 
Shordi:

Interesante el tema de las fechas. Tengo que preparar una pregunta. Pero me gustaría volver a repasar bien
tu respuesta para comprender mejor esos cambios de fecha. Dichoso agosto. Y me estoy viendo septiembre igual..

En "estas fechas".. vuelve mucha gente al curro.  

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
Mostrar mensajes anteriores:    
 

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

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
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