Cuando trato de crear un objeto Fecha desde el formato de cadena en Luxon, obtengo una fecha no válida.
Las horas y los minutos no se pasan . Esto me da una fecha no válida
const dateString = '28.09.2022';
DateTime.fromFormat(dateString, 'dd.LL.yyyy HH:mm').toJSDate();
// Invalid date
Al usar la biblioteca de momentos , parece que si no se pasan las horas y los minutos, el valor predeterminado es 00:00:00
const dateString = '28.09.2022';
moment(date, 'DD.MM.YYYY HH:mm').toDate();
// Wed Sep 28 2022 00:00:00 GMT+1000 (Australian Eastern Standard Time)
¿Hay alguna opción para formatear ambos formatos con horas y sin horas en Luxon usando un método, ya que estaba usando el momento en muchos lugares y aceptaba el formato 'DD.MM.YYYY HH:mm' sin importar si pasa HH:mm en cadena?
No, me temo que no hay una forma nativa de obtener el comportamiento moment(String, String) en Luxon. Además, parece que no hay una contraparte de moment(String, String[]) en Luxon.
Tenga en cuenta que, si bien "el analizador de Moment es muy indulgente" , la sección de análisis de Luxon de los documentos establece que "Luxon es bastante estricto con respecto al formato que coincide exactamente con la cadena".
Puede crear su propio método personalizado e implementar la lógica comercial que necesita, aquí un posible ejemplo:
const DateTime = luxon.DateTime;
const customParse = (dateString) => {
let dt = DateTime.fromFormat(dateString, 'dd.LL.yyyy');
if (dt.isValid) {
return dt;
}
return DateTime.fromFormat(dateString, 'dd.LL.yyyy HH:mm');
}
let dateString = '28.09.2022';
console.log(customParse(dateString).toJSDate());
dateString = '28.09.2022 11:46';
console.log(customParse(dateString).toJSDate());
<script src="https://cdn.jsdelivr.net/npm/luxon@3.0.4/build/global/luxon.min.js"></script>