2015-09-20 3 views
2

Я хочу создать текстовое поле в asp.net, чтобы получить персидскую дату от пользователя и преобразовать в грузинский формат даты, чтобы сравнить с датой моего столбца даты в моей базе данных sql, может ли кто-нибудь мне помочь? ?Convert from Jalali to Georgian date

+1

Вы должны размещать код, чтобы показать, что вы испытываете проблемы с. Переполнение стека может помочь вам с конкретными проблемами с вашим кодом, но ваш вопрос слишком широк. –

+2

Посмотрите на этот вопрос: «[* Как конвертировать строку даты персидского календаря в DateTime? *] (Http://stackoverflow.com/q/10655116/1364007)« для некоторых советов. нотабене Я нашел его, ища «C# Персидский календарь» в Google - это был второй результат для меня. –

+0

Noda Time полезен здесь. См. [Мой ответ] (http://stackoverflow.com/a/32683586/634824) в двух экземплярах. –

ответ

0

вы можете использовать этот код: JavaScript

function jalali_to_gregorian(jy,jm,jd){ 
if(jy > 979){ 
    gy=1600; 
    jy-=979; 
}else{ 
    gy=621; 
} 
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; 
if(days > 365){ 
    gy+=parseInt((days-1)/365); 
    days=(days-1)%365; 
} 
gd=days+1; 
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]; 
for(gm=0;gm<13;gm++){ 
    v=sal_a[gm]; 
    if(gd <= v)break; 
    gd-=v; 
} 
return [gy,gm,gd]; 
} 

или использовать этот VisualBasic код:

Function jalali_to_gregorian(ByVal jy As Long, ByVal jm As Long, ByVal jd As Long) 

Dim sal_a(12), out(2), gy, gm, gd, days, jm2, gm2, i As Long 

If jy > 979 Then 
    gy = 1600 
    jy = jy - 979 
Else 
    gy = 621 
End If 

jm2 = IIf(jm < 7, (jm - 1) * 31, ((jm - 7) * 30) + 186) 
days = (365 * jy) + ((jy \ 33) * 8) + (((jy Mod 33) + 3) \ 4) + 78 + jd + jm2 
gy = gy + (400 * (days \ 146097)) 
days = days Mod 146097 
If days > 36524 Then 
    days = days - 1 
    gy = gy + (100 * (days \ 36524)) 
    days = days Mod 36524 
    If days >= 365 Then 
    days = days + 1 
    End If 
End If 
gy = gy + (4 * (days \ 1461)) 
days = days Mod 1461 
If days > 365 Then 
    gy = gy + ((days - 1) \ 365) 
    days = (days - 1) Mod 365 
End If 

Источник: https://jdf.scr.ir/