Estoy tratando de formatear la fecha en Google App Script y luego almacenarla en la hoja de Google. Todo funciona bien, pero el problema es que la fecha de origen no tiene un formato específico, las fechas pueden venir en diferentes formatos como DD-MM-AAAA, MM-DD-AAAA, AAAA-MM-DD o la fecha también puede venir con el tiempo y luego ve para convertirlo al formato AAAA-MM-DD y luego guardarlo en la hoja de Google. Intenté convertir a encubierto usando los siguientes códigos:
var date = new Date("01-15-2022").toISOString().split('T')[0] // MM/dd/yyyy Logger.log(date);este código funciona solo si la fecha de origen tiene un formato como MM/dd/aaaa y aaaa/MM/dd solo si la fecha tiene un formato como dd/MM/aaaa , entonces los códigos no funcionan.
Quiero un método que convierta todos los formatos de fecha en un solo formato como aaaa/MM/dd
Tengo una pequeña mala noticia para ti. No hay forma de distinguir algorítmicamente entre 01-02-2022 (1 de febrero de 2022) y 01-02-2022 (2 de enero de 2022). Entonces, técnicamente, esta fuente de datos es la infame 'basura en'.
De alguna manera logré encontrar una opción alternativa para lograr esto usando la Biblioteca Moment Js a continuación, es la solución:
function myFunction() { let formats = ["DD/MM/YYYY", "MM/DD/YYYY", "YYYY/MM/DD", "DD/MM/YYYY hh:mm:ss", "DD/MM/YYYY hh:mm:ss A", "MM/DD/YYYY hh:mm:ss A", "YYYY/MM/DD hh:mm:ss A"] Logger.log(convertDate("5/1/2022 12:00:00 PM", formats)); } function convertDate(date, formats){ eval(UrlFetchApp.fetch('https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.min.js').getContentText()); let dateMomentObject = moment(date, formats); let dateObject = dateMomentObject.toDate(); let dateStr = moment(dateObject).format('YYYY-MM-DD'); return dateStr; }