Problema con pasaje de texto a fecha

Es extraño que a estás alturas tenga problemas con el pasaje de texto a fechas, pero es de loco sucede solo con algunas, en este caso con 1974-12-22 teniéndola en un campo Mysql como string y al querer pasarla a un campo datetime, siempre presenta problemas.

Por ejemplo con 1974-12-23 no sucede.

Trate de leerlo de entrada como un

Var dteFECNAC as DateTime

CASO 1:
dteFECNAC = larsRecordset.Column("FECNAC").DateTimeValue

CASO 2:
strFECNAC = larsRecordset.Column("FECNAC").StringValue.Trim.Left(10)
dteFECNAC = DateTime.FromString(strFECNAC)
// he probado distintas variantes del caso 2, com el FromString, etc.

Establezco en el Session.Opening el:
Session.LanguageCode = "es"

ya he probado otros, si simplemente cambio la fecha en la base de datos a 1974-12-23 funciona sin problemas, si vuelvo a 1974-12-22 ocurre el problema.

El Exception que me proporciona es:
Parse error: date needs to be in the format of YYYY-MM-DD HH:MM or YYYY-MM-DD
Y la variable strFECNAC esta cargada con 1974-12-22

Agradezco toda la ayuda posible ya que el caso me tiene confundido.

XOJO 2022r4
Está alojado en Linux Debian 11 bajo Lifeboat 111, quizás @Tim_Parnell pueda guiarme.

¿Tendrás algún ejemplo el cual pueda reproducir tu problema?

Lo solucione haciendo lo siguiente:
Tomar solo la fecha yyyy-mm-dd (asi esta grabado en mysql con la hora 00:00:00), luego que la pase a texto, le agrego una hora cualquiera, para que luego si me lo permita pasar a fecha.
*En la base de datos esta guardada 1974-12-22 00:00:00 no debería ser problema porque con la mayoría trabaja bien , pero con esa da error, asi que si tuviera una hora no daría.

Var strFECNAC as String = larsRecordset.Column("FECNAC").StringValue.Trim.Left(10) + " 10:00"
Var dteFECNAC as DateTime = DateTime.FromString(strFECNAC)

Hola @AlbertoD , justo recién estaba publicando la solución temporal que encontré, es muy extraño que se comporte asi, puntualmente con esa fecha (y supongo algunas más).

He visto un caso por ahi que le pasaba algo similar y pero no la solución:

Por lo que se ve puede ser la región usada en la computadora (leyendo los otros mensajes).
¿Esto pasa en tu servidor web y también en tu computadora?
¿Qué región/idioma/formato tienes definido en el servidor/computadora?


Sin usar Mysql y sólo poner DateTime.FromString(“1974-12-22”) ¿también se presenta el problema?

Muy curioso, SI, me da error al momento de llegar ahi:

Var dteFECNAC as DateTime = DateTime.FromString("1974-12-22")

Parse error: date needs to be in the format of YYYY-MM-DD HH:MM or YYYY-MM-DD

Por suerte el error me lo da tanto en el desarrollo (MAC) como en el Deploy (Linux con Lifeboat como mencionaba).

Mi Mac esta con Uruguay y el Lifeboat tiene la configuración regional igual (por lo menos eso indica).

Es extraño que sean fechas puntuales, yo menciono el 1974-12-22 y el otro caso 1977-05-22 ?!

Proyecto nuevo, agrego un Text con nombre txtFECNAC
en el Opening de la página le agrego el siguiente Código y al ejecutar aparece el error (no tomar en cuenta, el mensaje de Permiso que me aparece).

Sub Shown()
  
  
  Var dteFECNAC as DateTime = DateTime.FromString("1974-12-22")
  txtFECNAC.Text = dteFECNAC.SQLDate.ToText
  
End Sub

Me imagino que tu zona horaria está en Montevideo - Uruguay (o alguna otra de Uruguay), ¿puedes cambiar tu Mac a zona horaria Buenos Aires - Argentina y probar de nuevo?

Uruguay:
image

Argentina (lo mismo para Chicago USA):
image

#71555 - DateTime FromString fails for “1974-12-22” if the TimeZone on the computer is set to Uruguay

1 Like

Si @AlbertoD funcionó, MUCHAS GRACIAS!, un comportamiento muy extraño la verdad me estaba volviendo loco.
Solucionado en mi MAC, deje Idioma y Región Uruguay pero Fecha y Hora Argentina.

Supongo deba cambiar en el Lifeboat por supuesto, porque fue en Deploy que me di cuenta que se “caía”.
Ahora el problema es que en el Lifeboat no me aparece Buenos Aires y si Montevideo jaja! (@Tim_Parnell) y no se si aplicando “Sync with Mac” solucionará el problema.

En mi caso, tengo un servidor con hora de Nueva York, si le hago clic en ‘Sync with Mac’ la opción cambia a America - Chicago sin importar en dónde esté en ese diálogo (puedo estar seleccionando Asia - Dubai y se cambia.

¿Qué pasa si seleccionas ‘Sync with Mac’? No necesitas presionar OK hasta confirmar si es una opción válida.

Voy a probar en un par de horas aquí, que ya el movimiento sea menor a realizar los cambios en el server y te aviso, nuevamente gracias!

No es necesario esperar, la idea es hacer esto en Lifeboat y ver si se selecciona algo parecido a lo que tienes en tu Mac:
ezgif.com-gif-maker (1)

La duda es, si no tiene Lifeboat ‘Buenos Aires - Argentina’ entonces si pone otra opción de la lista.

Lo probé y no me selecciona ninguno, no se como mandarte el video.

Ok, voy a hacer la consulta a Tim ya que no veo opción de poner el server en UTC-3 (con Lifeboat) y no tengo idea de qué ciudad de la lista maneje el mismo horario.

Aguardo porque no voy a poder subir el nuevo cambio, hasta no ver que configuración regional ponerle, gracias!

Lo que puedes probar mientras tanto, es alguna de las ciudades de la lista (Lifeboat) que puedan ser igual a la de tu hora, pruebas en la mac si no se presenta el bug de Xojo y pones esa fecha en el servidor.

De todos modos siempre hay riesgo de que alguna otra fecha no funcione hasta que arreglen el bug, puedes ver mi comentario de la fecha 1977-05-22 y poner la hora de Roma en el reporte.

Tal vez prefieras usar tu código tipo .FromString(fecha + " 10:00") mientras sale nueva versión sin el bug.

Por el momento en la MAC no tengo problemas en tener Buenos Aires, pero al no poderlo subir, quizás tenga que terminar con el ajuste .FromString(fecha + " 10:00")

Veo que Lifeboat además de no figurar Buenos Aires, tampoco figura Brasilia (o por lo menos no estoy pudiendo encontrarlos, inclusos algunos otros en el uso horario -3).

Alberto very kindly pointed me to this thread. I’ve been extremely sick so I haven’t been able to keep up with this thread.

In a few days when I’ve recovered I will take a look through Google Translate and see if there’s any assistance I can provide.

Mauricio, me respondió mensaje Tim y dice que la lista de ciudades es lo que le entrega el servidor, si no muestra Buenos Aires entonces la opción es elegir otra ciudad con el mismo horario.

Tal vez tengas que probar en Xojo fechas en el rango que manejas para asegurar que no se tengan errores ya que como en Montevideo falla una fecha de 1974 con horario de Roma falla una de 1977 (estas no son las únicas que fallan).

@AlbertoD muchas gracias probaré lo que me indicas.
@Tim_Parnell no hay problema espero te mejores pronto.

Muchas gracias a ambos!