您好可以任何人帮我改变从Gregorian到波斯语javascript的日期。我想在html javascript中使用它
答案 0 :(得分:12)
您可以使用:toLocaleDateString();
例如:
let today = new Date().toLocaleDateString('fa-IR');
console.log(today);
fa-IR适用于波斯语和波斯语, 别人就像在吼叫:
“ zh-CN”:对于英语
“ hi-IN”:对于印地语
。
答案 1 :(得分:7)
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);
答案 2 :(得分:6)
以波斯数字获取它:
new Date().toLocaleDateString('fa-IR');
// ۱۳۹۹/۱/۲۳
要获取其拉丁数字:
new Date().toLocaleDateString('fa-IR').replace(/([۰-۹])/g, token => String.fromCharCode(token.charCodeAt(0) - 1728));
// 1399/1/23
答案 3 :(得分:2)
您还可以查看:JalaliJSCalendar(github)
JalaliJSCalendar是一个基于JavaScript的日期选择器和日历小部件 在&#34; Dynarch DHTML日历&#34;来自Mihai Bazon。主要区别 两者之间是JalaliJSCalendar支持波斯语(AKA Hijri Shamsi)日历,这是伊朗的官方日历。
它包含转换器(jalali.js)和HTML datepicker / calendar
答案 4 :(得分:2)
您可以像使用以下代码一样轻松使用jalali-moment
import * as moment from 'jalali-moment';
let persianDate = moment("1989/1/24").locale('fa').format('YYYY/M/D'); // 1367/11/4
答案 5 :(得分:1)
您可以使用jalaali-js
Jalaali JavaScript
一些用于转换Jalaali的Javascript函数(Jalali,波斯语, Khayyami,Khorshidi,Shamsi)和Gregorian日历系统 其他
答案 6 :(得分:1)
此页面中的所有答案均无法正确运行,在某些情况下它可以正常运行,但并非总是正确!这是双向转换方法:
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];
}
答案 7 :(得分:0)
获取'jalali.js'from this link。
如果您的电话号码是波斯格式,则首先必须将其更改为英语格式,from 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;
};
并使用下面的函数“ getGregorian()”来转换日期。例如,我将“ ۱۳۹۸/۰۱/۲۴”日期转换为:
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;
}
答案 8 :(得分:0)
function convertDate(stringArg) {
const ETF = '۰۱۲۳۴۵۶۷۸۹';
const ans = g2j(...stringArg.split('/').map(elem => +elem))
.map(elem =>
String(elem)
.split('')
.map(subElem => ETF[+subElem])
.join('')
)
.join('/');
return ans;
}