How to change gregorian date to persian date in javascript

Hi, can someone help me change the date from Gregorian to Persian javascript. I want to use it in html javascript

+18
javascript date persian
source share
7 answers

week = new Array("يكشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنج شنبه", "جمعه", "شنبه") months = new Array("فروردين", "ارديبهشت", "خرداد", "تير", "مرداد", "شهريور", "مهر", "آبان", "آذر", "دي", "بهمن", "اسفند"); today = new Date(); d = today.getDay(); day = today.getDate(); month = today.getMonth() + 1; year = today.getYear(); year = (window.navigator.userAgent.indexOf('MSIE') > 0) ? year : 1900 + year; if (year == 0) { year = 2000; } if (year < 100) { year += 1900; } y = 1; for (i = 0; i < 3000; i += 4) { if (year == i) { y = 2; } } for (i = 1; i < 3000; i += 4) { if (year == i) { y = 3; } } if (y == 1) { year -= ((month < 3) || ((month == 3) && (day < 21))) ? 622 : 621; switch (month) { case 1: (day < 21) ? (month = 10, day += 10) : (month = 11, day -= 20); break; case 2: (day < 20) ? (month = 11, day += 11) : (month = 12, day -= 19); break; case 3: (day < 21) ? (month = 12, day += 9) : (month = 1, day -= 20); break; case 4: (day < 21) ? (month = 1, day += 11) : (month = 2, day -= 20); break; case 5: case 6: (day < 22) ? (month -= 3, day += 10) : (month -= 2, day -= 21); break; case 7: case 8: case 9: (day < 23) ? (month -= 3, day += 9) : (month -= 2, day -= 22); break; case 10: (day < 23) ? (month = 7, day += 8) : (month = 8, day -= 22); break; case 11: case 12: (day < 22) ? (month -= 3, day += 9) : (month -= 2, day -= 21); break; default: break; } } if (y == 2) { year -= ((month < 3) || ((month == 3) && (day < 20))) ? 622 : 621; switch (month) { case 1: (day < 21) ? (month = 10, day += 10) : (month = 11, day -= 20); break; case 2: (day < 20) ? (month = 11, day += 11) : (month = 12, day -= 19); break; case 3: (day < 20) ? (month = 12, day += 10) : (month = 1, day -= 19); break; case 4: (day < 20) ? (month = 1, day += 12) : (month = 2, day -= 19); break; case 5: (day < 21) ? (month = 2, day += 11) : (month = 3, day -= 20); break; case 6: (day < 21) ? (month = 3, day += 11) : (month = 4, day -= 20); break; case 7: (day < 22) ? (month = 4, day += 10) : (month = 5, day -= 21); break; case 8: (day < 22) ? (month = 5, day += 10) : (month = 6, day -= 21); break; case 9: (day < 22) ? (month = 6, day += 10) : (month = 7, day -= 21); break; case 10: (day < 22) ? (month = 7, day += 9) : (month = 8, day -= 21); break; case 11: (day < 21) ? (month = 8, day += 10) : (month = 9, day -= 20); break; case 12: (day < 21) ? (month = 9, day += 10) : (month = 10, day -= 20); break; default: break; } } if (y == 3) { year -= ((month < 3) || ((month == 3) && (day < 21))) ? 622 : 621; switch (month) { case 1: (day < 20) ? (month = 10, day += 11) : (month = 11, day -= 19); break; case 2: (day < 19) ? (month = 11, day += 12) : (month = 12, day -= 18); break; case 3: (day < 21) ? (month = 12, day += 10) : (month = 1, day -= 20); break; case 4: (day < 21) ? (month = 1, day += 11) : (month = 2, day -= 20); break; case 5: case 6: (day < 22) ? (month -= 3, day += 10) : (month -= 2, day -= 21); break; case 7: case 8: case 9: (day < 23) ? (month -= 3, day += 9) : (month -= 2, day -= 22); break; case 10: (day < 23) ? (month = 7, day += 8) : (month = 8, day -= 22); break; case 11: case 12: (day < 22) ? (month -= 3, day += 9) : (month -= 2, day -= 21); break; default: break; } } console.log(week[d] + " " + day + " " + months[month - 1] + " " + year); 

+9
source share

You can also check this: JalaliJSCalendar ( github )

JalaliJSCalendar is a JavaScript date and calendar selector based on the "Dynarch DHTML Calendar" by Mihai Bazon. The main difference between the two is that the JalaliJSCalendar supports the Persian (AKA Hijri Shamsi), which is the official Iranian calendar.

It contains a converter ( jalali.js ) and HTML datepicker / calendar

+3
source share

You can use the jalali moment as simple as the following code

 import * as moment from 'jalali-moment'; let persianDate = moment("1989/1/24").locale('fa').format('YYYY/M/D'); // 1367/11/4 

demo in plunker

+3
source share

You can use jalaali-js

Jalaali javascript

Several javascript functions for converting Jalaali (Jalali, Persian, Khayyami, Khorshidi, Shamsi) and Gregorian calendar systems for each other.

+2
source share

You can use: toLocaleDateString ();

eg:

 let today = new Date().toLocaleDateString('fa-IR'); console.log(today); 

fa-IR for Farsi (Persian) and Iran, another as below:

"en-US": for English

"Hello": for Hindi

,,

+2
source share

Get 'jalali.js' from this link .

If your numbers are in Persian format, you must first change them to English format, at this link

 var persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g], arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g], fixNumbers = function (str) { if (typeof str === 'string') { for (var i = 0; i < 10; i++) { str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i); } } return str; }; 

and use a function like getGregorian () below to convert the date. For example, I convert the date "۱۳۹۸/۰۱/۲۴":

 function getGregorian () { var date = ("۱۳۹۸/۰۱/۲۴").split('/'); y = Number( fixNumbers(date[0]) ); m = Number( fixNumbers(date[1]) ); d = Number( fixNumbers(date[2] )); gDate = toGregorian(y, m, d) gDate = gDate .gy + '/' + gDate .gm + '/' + gDate .gd; } 
0
source share

not the answers on this page worked correctly, in some cases it works, but not always correctly! this works on both sides of the conversion methods:

 function gregorian_to_jalali(gy,gm,gd){ var g_d_m=[0,31,59,90,120,151,181,212,243,273,304,334]; var jy=(gy<=1600)?0:979; gy-=(gy<=1600)?621:1600; var gy2=(gm>2)?(gy+1):gy; var days=(365*gy) +(parseInt((gy2+3)/4)) -(parseInt((gy2+99)/100)) +(parseInt((gy2+399)/400)) -80 +gd +g_d_m[gm-1]; jy+=33*(parseInt(days/12053)); days%=12053; jy+=4*(parseInt(days/1461)); days%=1461; jy+=parseInt((days-1)/365); if(days > 365)days=(days-1)%365; var jm=(days < 186)?1+parseInt(days/31):7+parseInt((days-186)/30); var jd=1+((days < 186)?(days%31):((days-186)%30)); return [jy,jm,jd]; } function jalali_to_gregorian(jy,jm,jd){ var gy=(jy<=979)?621:1600; jy-=(jy<=979)?0:979; var days=(365*jy) +((parseInt(jy/33))*8) +(parseInt(((jy%33)+3)/4)) +78 +jd +((jm<7)?(jm-1)*31:((jm-7)*30)+186); gy+=400*(parseInt(days/146097)); days%=146097; if(days > 36524){ gy+=100*(parseInt(--days/36524)); days%=36524; if(days >= 365)days++; } gy+=4*(parseInt((days)/1461)); days%=1461; gy+=parseInt((days-1)/365); if(days > 365)days=(days-1)%365; var gd=days+1; var sal_a=[0,31,((gy%4==0 && gy%100!=0) || (gy%400==0))?29:28,31,30,31,30,31,31,30,31,30,31]; var gm for(gm=0;gm<13;gm++){ var v=sal_a[gm]; if(gd <= v)break; gd-=v; } return [gy,gm,gd]; } 
0
source share

All Articles