Si tengo esta fecha: April 14, 2022 14:00 UTC , ¿cómo puedo validar que está en MMMM DD, YYYY HH:mm <timezone> ?
Lo probé con moment pero no tiene formato para la zona horaria.
moment(date, 'MMMM DD, YYYY HH:mm',true).isValid() ¿Cómo puedo validar que la cadena está en formato MMMM DD, YYYY HH:mm <timezone> ?
Puede incluir "UTC" como texto literal en el formato de análisis, por ejemplo
let date = 'April 14, 2022 14:00 UTC'; console.log( moment(date, 'MMMM DD, YYYY HH:mm[ UTC]',true).isValid() ); <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.2/moment.min.js"></script>Según la documentación de moment.js , se admiten varios formatos de compensación, por lo que si hay otras representaciones de compensación, puede usar varias pruebas para admitir, por ejemplo, "UTC" y "+00:00" (o ±HH: mm en general), por ejemplo
['April 14, 2022 14:00 UTC', 'April 14, 2022 14:00 +00:00', 'April 14, 2022 14:00 +05:30' ].forEach(date => console.log(`${date} is valid? ` + `${moment(date, 'MMMM DD, YYYY HH:mm[ UTC]', true).isValid() || moment(date, 'MMMM DD, YYYY HH:mm Z', true).isValid()}` ) ); <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.2/moment.min.js"></script>Desafortunadamente, isValid no admite múltiples formatos en una sola llamada, por lo que no puede hacer:
moment(date, 'MMMM DD, YYYY HH:mm[ UTC]', 'MMMM DD, YYYY HH:mm Z', true).isValid()ya que solo se reconoce el primer formato.