La función DateTime.From devuelve un valor de tipo datetime a partir del valor que se especifique.
DateTime.From(
value as any,
optional culture as nullable text
) as nullable datetime
- value: valor a convertir a tipo datetime.
- culture: (opcional) cadena de texto con información sobre la configuración regional a aplicar.
Si el parámetro value toma el valor null, la función devuelve null también. Si value es un valor de tipo datetime, la función devuelve el mismo valor value.
Los tipos convertibles a datetime son los siguientes:
- text
- date, en cuyo caso se asigna la hora 0:00:00 a la fecha indicada
- datetimezone, devolviéndose el equivalente de la fecha indicada en el huso horario local
- time, en cuyo caso se asigna la fecha del 30 de diciembre de 1899 a la hora indicada
- number, cuya parte entera se interpreta como el número de días a partir del 30 de diciembre de 1899 y cuya parte decimal se interpreta como fracción de un día
Si se intenta convertir un valor de otro tipo, la función devuelve un error.
Es posible convertir el texto "2020/2/17" en un valor de tipo datetime con la siguiente expresión:
DateTime.From("2020/2/17")
17/02/2020 0:00:00
Como puede observarse, el resultado es de tipo datetime, habiendo recibido como hora las 0:00:00.
Si el formato del texto no coincide con la configuración regional de nuestro ordenador, puede resultar necesario especificar el parámetro culture. Por ejemplo, el texto "2/17/2020" representa una fecha con formato mes/día/año no reconocido en mi ordenador (que tiene configuración regional de español de España). En este caso basta agregar el parámetro "en-US":
DateTime.From("2/17/2020", "en-US")
17/02/2020 0:00:00
Si el texto que estamos convirtiendo también incluye una hora, ésta se incluye correctamente en el resultado:
DateTime.From("2020/10/18 19:25:30")
18/10/2020 19:25:30
En este ejemplo, el valor a convertir es de tipo date, devolviéndose el mismo valor y asignando como hora las 0:00:00:
DateTime.From(#date(2020, 10, 28))
28/10/2020 0:00:00
Esta función también interpreta correctamente textos representando fechas y horas con formato ISO 8601:
DateTime.From("2020/5/28T10:21:34")
28/05/2020 10:21:34
Si value es un valor tipo time, se asigna la fecha del 30 de diciembre de 1899:
DateTime.From(#time(23,59,7))
30/12/1899 23:59:07
Si se pasa a la función un valor numérico como 0, se interpreta como el número de días a añadir a la fecha del 30 de diciembre de 1899:
DateTime.From(0)
30/12/1899 0:00:00
En este caso se ha pasado el valor 0 y la fecha mencionada es la misma que se devuelve: 30/12/1899. Pero si pasamos el valor 1:
DateTime.From(1)
31/12/1899 0:00:00