สร้าง thUtility.js เลขไทยแบบครบจบในไฟล์เดียว

 

thUtility.js เลขไทย

รองรับ

  • เลขไทย
  • วันที่ไทย (พ.ศ.)
  • รูปแบบวันที่สั้น / ยาว
  • จำนวนเงินเลขไทย
  • จำนวนเงินเป็นข้อความ (ไม่ต้องพึ่ง CDN)


/************************************************* * THAI UTILITY JS * Version: 1.0 * รองรับ Google Apps Script / Web App *************************************************/ const ThaiUtil = (() => { /* ============================== 1) แปลงเลขอารบิก → เลขไทย ============================== */ function toThaiNumber(input) { if (input === null || input === undefined) return ''; const thDigits = ['๐','๑','๒','๓','๔','๕','๖','๗','๘','๙']; return input.toString().replace(/\d/g, d => thDigits[d]); } /* ============================== 2) เดือนภาษาไทย ============================== */ const MONTHS_FULL = [ "มกราคม","กุมภาพันธ์","มีนาคม","เมษายน", "พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม", "กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม" ]; const MONTHS_SHORT = [ "ม.ค.","ก.พ.","มี.ค.","เม.ย.", "พ.ค.","มิ.ย.","ก.ค.","ส.ค.", "ก.ย.","ต.ค.","พ.ย.","ธ.ค." ]; /* ============================== 3) วันที่ไทย (เต็ม) เช่น วันพฤหัสบดี ที่ ๑๒ กุมภาพันธ์ พ.ศ. ๒๕๖๙ ============================== */ function formatThaiDateFull(date) { const d = new Date(date); const DAYS = [ "วันอาทิตย์","วันจันทร์","วันอังคาร", "วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์" ]; const dayName = DAYS[d.getDay()]; const day = toThaiNumber(d.getDate()); const month = MONTHS_FULL[d.getMonth()]; const year = toThaiNumber(d.getFullYear() + 543); return `${dayName} ที่ ${day} ${month} พ.ศ. ${year}`; } /* ============================== 4) วันที่ไทย (ราชการสั้น) เช่น ๑๒ ก.พ. ๒๕๖๙ ============================== */ function formatThaiDateShort(date) { const d = new Date(date); const day = toThaiNumber(d.getDate()); const month = MONTHS_SHORT[d.getMonth()]; const year = toThaiNumber(d.getFullYear() + 543); return `${day} ${month} ${year}`; } /* ============================== 5) จำนวนเงิน → รูปแบบเลขไทย เช่น ๑,๒๐๐.๐๐ ============================== */ function formatThaiCurrency(amount) { if (!amount && amount !== 0) return ''; const formatted = Number(amount).toLocaleString('th-TH', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); return toThaiNumber(formatted); } /* ============================== 6) จำนวนเงิน → ข้อความภาษาไทย เช่น หนึ่งพันสองร้อยบาทถ้วน ============================== */ function bahtText(num) { if (isNaN(num)) return ''; const numberText = [ '', 'หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า', 'หก', 'เจ็ด', 'แปด', 'เก้า' ]; const positionText = ['', 'สิบ', 'ร้อย', 'พัน', 'หมื่น', 'แสน', 'ล้าน']; function convertInteger(number) { let result = ''; const digits = number.toString().split('').reverse(); for (let i = 0; i < digits.length; i++) { const digit = parseInt(digits[i]); if (digit === 0) continue; if (i === 0 && digit === 1 && digits.length > 1) { result = 'เอ็ด' + result; } else if (i === 1 && digit === 2) { result = 'ยี่' + positionText[i] + result; } else if (i === 1 && digit === 1) { result = positionText[i] + result; } else { result = numberText[digit] + positionText[i] + result; } } return result; } num = parseFloat(num).toFixed(2); const [integer, decimal] = num.split('.'); let baht = ''; let intNum = parseInt(integer); if (intNum === 0) { baht = 'ศูนย์'; } else { baht = convertInteger(intNum); } baht += 'บาท'; if (decimal === '00') { baht += 'ถ้วน'; } else { baht += convertInteger(parseInt(decimal)) + 'สตางค์'; } return baht; } /* ============================== PUBLIC API ============================== */ return { toThaiNumber, formatThaiDateFull, formatThaiDateShort, formatThaiCurrency, bahtText }; })();

✅ ตัวอย่างใช้งาน (Google Apps Script / Web)

const todayFull = ThaiUtil.formatThaiDateFull(new Date()); const todayShort = ThaiUtil.formatThaiDateShort(new Date()); const moneyNumber = ThaiUtil.formatThaiCurrency(1250); const moneyText = ThaiUtil.bahtText(1250); console.log(todayFull); console.log(todayShort); console.log(moneyNumber); console.log(moneyText);

🎯 ตัวอย่างผลลัพธ์

วันพฤหัสบดี ที่ ๑๒ กุมภาพันธ์ พ.ศ. ๒๕๖๙ ๑๒ ก.พ. ๒๕๖๙ ๑,๒๕๐.๐๐ หนึ่งพันสองร้อยห้าสิบบาทถ้วน

หากถูกใจโปรดสนับสนุนเป็นกำลังใจกันด้วยนะครับ

สนับสนุนที่นี่




แสดงความคิดเห็น (0)
ใหม่กว่า เก่ากว่า