Hice un formulario con Confiforms en Confluence incluyendo un campo de calendario persa. Hay una macro de control de filtro para filtrar los registros. Pero este filtro no funciona bien con las fechas persas. Debido a que las fechas persas se guardan como marca de tiempo, pero el campo del calendario persa muestra la fecha, no la marca de tiempo, y cuando quiero filtrar registros, debo escribir la marca de tiempo en el campo del calendario persa para que el filtro funcione.
Captura de pantalla del formulario
El problema es que quiero que cuando elijo una fecha, devuelva su marca de tiempo al campo en lugar de la fecha. (Mira la foto)
¿Hay algún código JavaScript/jQuery para convertir una entrada de fecha persa de un campo en una marca de tiempo?
Editar: el formato de fecha shamsi de la entrada de campo es dm-aa (por ejemplo, 15-12-1400)
La siguiente función convertirá una fecha persa (Jalali) en una marca de tiempo (basada en UTC).
Pasa el año, el mes y el día de Jalali a la función y el resultado es la marca de tiempo en la zona UTC.
function jalaliToUTCTimeStamp(year, month, day) { const format=new Intl.DateTimeFormat('en-u-ca-persian',{dateStyle:'short',timeZone:"UTC"}); let g=new Date(Date.UTC(2000,month,day)); g=new Date(g.setUTCDate(g.getUTCDate()+226867)); const gY=g.getUTCFullYear(g)-2000+year; g=new Date(((gY<0)?"-":"+")+("00000"+Math.abs(gY)).slice(-6)+"-"+("0"+(g.getUTCMonth(g)+1)).slice(-2)+"-"+("0"+(g.getUTCDate(g))).slice(-2)); let [pM,pD,pY] = [...format.format(g).split("/")],i=0; g=new Date(g.setUTCDate(g.getUTCDate()+~~(year*365.25+month*30.44+day-(pY.split(" ")[0]*365.25+pM*30.44+pD*1))-2)); while (i<4){ [pM,pD,pY]=[...format.format(g).split("/")]; if(pD==day && pM==month && pY.split(" ")[0]==year)return +g; g=new Date(g.setUTCDate(g.getUTCDate()+1)); i++; } throw new Error('Invalid Persian Date!'); } //========================================================== // Test Units //========================================================== console.log(jalaliToUTCTimeStamp(1400,12,5)); console.log(jalaliToUTCTimeStamp(1400,12,6)); console.log(jalaliToUTCTimeStamp(1400,12,7)); console.log(jalaliToUTCTimeStamp(1400,12,8)); console.log(jalaliToUTCTimeStamp(1400,12,9)); console.log(jalaliToUTCTimeStamp(1400,12,10)); console.log(jalaliToUTCTimeStamp(1400,12,11)); //==========================================================