Solo quiero cambiar la forma de los números de persa a inglés (quiero decir así 1400/06/31). Me refiero a mantenerlo persa. Solo la fuente del texto debe ser inglesa. ¿Cómo puedo hacer esto?
var today = new Date().toLocaleDateString('fa-IR'); var field = document.querySelector('#tday'); field.value = today; <input type="text" name="tday" class="form-control w-100 text-center d-inline-block" id="tday">Puede usar esta función para convertir números persas a números ingleses
export default function toEnglishDigits(num) { const id = { '۰': '0', '۱': '1', '۲': '2', '۳': '3', '۴': '4', '۵': '5', '۶': '6', '۷': '7', '۸': '8', '۹': '9', } return num ? num.toString().replace(/[^0-9.]/g, function (w) { return id[w] || w }) : null }y usa esto para convertir números ingleses a números persas
export default function toPersianDigits (num) { if (num?.toString()) { const persianNumbers = '\u06F0\u06F1\u06F2\u06F3\u06F4\u06F5\u06F6\u06F7\u06F8\u06F9' return new String(num).replace(/[0123456789]/g, (d) => { return persianNumbers[d] }) } return num }también puede pasar cadenas a estas funciones con cualquier formato.
Si está de acuerdo con agregar un paquete, use la función digitsFaToEn de Persian Tools:
var englishNumber = digitsFaToEn("۱۴۰۰/۰۶/۳۱") // englishNumber = 1400/06/31https://github.com/herramientas-persianas/herramientas-persianas
Para convertir números ingleses (árabes) a números persas (farsi), el siguiente código de una línea hará el trabajo.
Cambiará todos los números farsi pero mantendrá todo lo demás sin cambios, incluida la posición del resto del texto.
const toFa = n => n.replace(/\d/g, d => "۰۱۲۳۴۵۶۷۸۹"[d]) // Tests console.log(toFa("1400/06/31")); // "۱۴۰۰/۰۶/۳۱" console.log(toFa("The number is 25,000")); // "The number is ۲۵,۰۰۰" console.log(toFa("عدد 1234.78 است")); // "عدد ۱۲۳۴.۷۸ است" console.log(toFa("من متولد 1975/10/25 هستم")); //"من متولد ۲۳/۱۰/۱۹۷۵ هستم"