Autor |
Mensaje |
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
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.
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, 19:39; editado 1 vez
|
#1 Lunes, 25 Junio 2018, 19:31 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Fechas A Partir De Una Cadena De Texto
De momento lo solucione así, pero seguro que hay una forma mas eficiente.
Saludos.
|
#2 Lunes, 25 Junio 2018, 19:56 |
|
|
razaAztk
aztk crux
Analista Programador
Registrado: Enero 2010
Mensajes: 340
Edad: 35 Ubicación: Tenochtitlan
|
Re: Fechas A Partir De Una Cadena De Texto
|
#3 Lunes, 25 Junio 2018, 20:59 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Fechas A Partir De Una Cadena De Texto
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.
|
#4 Lunes, 25 Junio 2018, 21:11 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
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 !
|
#5 Martes, 26 Junio 2018, 15:41 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
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
|
#6 Miercoles, 27 Junio 2018, 12:51 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
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 !
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.
|
#7 Jueves, 28 Junio 2018, 14:27 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
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
Interesante plantemiento con Scan()
Tomo nota.
Saludos.
|
#8 Jueves, 28 Junio 2018, 14:28 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Fechas A Partir De Una Cadena De Texto
[quote user="tincho" post="42354"] 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, 14:43; editado 1 vez
|
#9 Jueves, 28 Junio 2018, 14:42 |
|
|
razaAztk
aztk crux
Analista Programador
Registrado: Enero 2010
Mensajes: 340
Edad: 35 Ubicación: Tenochtitlan
|
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.
|
#10 Jueves, 28 Junio 2018, 22:36 |
|
|
|