Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 3
Ir a la página 1, 2, 3  Siguiente
 
Fechas A Partir De Una Cadena De Texto
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Fechas A Partir De Una Cadena De Texto 
 
Hola a todos.
En teoría se puede obtener una variable "Date" a partir de una cadena de texto verdad?
Miren este codigo a ver que se les ocurre.

Public Sub Form_Open()
  
  Dim dat As Date
  Dim strDat As String
  
  strDat = "1970-09-26T16:00:00+00:00"
  dat = CDate(strDat)
  
  Print Format(dat(), "YYYY")
  
End
 


No funciona, el IDE da error diciendo que CDate esperaba una fecha pero le pase una string. El caso es que en la ayuda de CDate dice que se le pasa un parámetro "Variant"

Estos trabajando con un programa para leer metadatos de archivos epub y uno de los valores es la fecha de publicacion del libro y viene de varias formas.

Me gustaria saber si esxiste una funcion que convierta en fecha una cadena de texto. Ya sea interna de gambas o si alguien hizo alguna.

Para comprobar use la linea de ordenes de linux:
echo `date -d '1970-09-26T16:00:00+00:00' +%Y`
Y funciono a la perfección, devolviendo:
1970

¿Alguna idea?
 



 
última edición por tincho el Lunes, 25 Junio 2018, 20:39; editado 1 vez 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Fechas A Partir De Una Cadena De Texto 
 
De momento lo solucione así, pero seguro que hay una forma mas eficiente.

Public Function TimeYear(str As String) As String ''Retorna el año a partir de una cadena de texto que se le pasa como parámetro.
  
  Dim strOut As String
  
  Shell "date -d " & str & " +%Y 2>&1" To strOut
  
  Return strOut ' Hay un retorno de carro al final pero omití el código para quitarlo para focalizar en las fechas
  
End


Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Fechas A Partir De Una Cadena De Texto 
 
Hola,

Intenta con Val. http://gambaswiki.org/wiki/lang/val?nh

Saludos.
 



 
razaAztk - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuarioVer la galería personal del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Fechas A Partir De Una Cadena De Texto 
 
razaAztk escribió: [Ver mensaje]
...Intenta con Val. http://gambaswiki.org/wiki/lang/val?nh...

Probé el código de mas abajo pero tampoco funciona.
  strDat = "1970-09-26T16:00:00+00:00"
  Print Val(strDat)
 


Tal vez sea un bug o de la versión que estoy usando (3.10.0)

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Fechas A Partir De Una Cadena De Texto 
 
...pero la función CDate() quiere una cadena:
  mes/dia/año horas:minutos:segundos

teniendo en cuenta también lo que resulta de la propiedad: System.TimeZone !
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Fechas A Partir De Una Cadena De Texto 
 
Tincho, el miembro Gianluigi del foro italiano te sugiere esto:

http://www.gambas-it.org/smf/index....g44028#msg44028
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Fechas A Partir De Una Cadena De Texto 
 
vuott escribió:  
...pero la función CDate() quiere una cadena:
  mes/dia/año horas:minutos:segundos
teniendo en cuenta también lo que resulta de la propiedad: System.TimeZone !

Exacto, una cadena es la entrada en la funcion, pero se ve que no vale cualquier cadena.
Ahora, por que con la misma cadena de texto el CDate de gambas da error y la terminal de gnu/linux no?

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Fechas A Partir De Una Cadena De Texto 
 
vuott escribió:  
Tincho, el miembro Gianluigi del foro italiano te sugiere esto:
http://www.gambas-it.org/smf/index....g44028#msg44028

Interesante plantemiento con Scan()
Tomo nota.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Fechas A Partir De Una Cadena De Texto 
 
[quote user="tincho" post="42354"]
vuott escribió:  
Ahora, por que con la misma cadena de texto el CDate de gambas da error y la terminal de gnu/linux no?

Evidentemente porque, como tú has dicho, la función CDate( ) de gambas no quiere cualquier cadena.
 



 
última edición por vuott el Jueves, 28 Junio 2018, 15:43; editado 1 vez 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Fechas A Partir De Una Cadena De Texto 
 
He realizado la siguiente función, teniendo en cuenta que la string pasada tenga el formato UTC que pusiste al comienzo.

Public Sub Main()
  Dim datex As Date
  datex = stringToUTC("1970-09-26T16:00:00+00:00")
  Print datex
End

Function stringToUTC(s as string) as date
 ' Convierte string con fecha UTC a valor date
 ' Formato de string:
 ' yyyy-mm-ddThh:min:ssTZ"
 Dim yyyy As String
 Dim mm As String
 Dim dd As String
 Dim hh As String
 Dim min As String
 Dim ss As String
 Dim tz_hh As Integer
 Dim tz_min As Integer
 Dim temp_s As String
 
 yyyy = mid(s,1,4)
 mm = mid(s,6,2)
 dd = mid(s,9,2)
 hh = mid(s,12,2)
 min = mid(s,15,2)
 ss = mid(s,18,2)
 tz_hh = Val(mid(s,20,3))
 tz_min = Val(mid(s,24,2))
 
 temp_s = mm &/ dd &/ yyyy & " " & hh & ":" & min & ":" & ss
 'Print temp_s
 
 Return DateAdd(DateAdd(CDate(temp_s), gb.Minute, tz_min), gb.Hour, tz_hh)
End
 


Espero te sirva. Saludos.
 



 
razaAztk - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuarioVer la galería personal del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 

Publicar nuevo tema  Responder al tema  Página 1 de 3
Ir a la página 1, 2, 3  Siguiente

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
No puede descargar archivos
No puede publicar eventos en el calendario