نمایش نتایج 1 تا 4 از 4

نام تاپیک: تبديل تاريخ ميلادي به شمسي با تابع

  1. #1

    تبديل تاريخ ميلادي به شمسي با تابع

    سلام دوستان
    من در حال نوشتن يه پرو‍ژه بودم كه نياز به گزارش گيري شدم كه در اون بايد تاريخ و به شمسي نمايش مي دادم واسه همين به دنبال روشي براي اين كار گشتم تنها راهي كه پيدا كردم استفاده از dll هايي كه تعداي از برنامه نويسا واسه تبديل تاريخ نوشته بودن كه يه كم استفاده از اونا مشكل بود منم يه تابع براي اينكار نوشتم و كد به زبان C#‎‎ تو بخش ‍#C هم قرار مي دم
    اين كد براي 1000 سال تست شده!!!
    Function (datevar MyDate)
    (
    numbervar MyYear:=year(MyDate);
    numbervar MyMonth:=month(MyDate);
    numbervar MyDay:=datepart('D',MyDate);

    numbervar array DaysToMonth365 := [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 ];
    numbervar array DaysToMonth366 := [ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 ];
    numbervar array DaysToMonth := [ 0, 31, 62, 93, 124, 155, 186, 216, 246, 276, 306, 336 ];
    numbervar array LeapYears33 := [ 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 ];

    booleanvar IsLeapYear;
    if ((myyear mod 4) <> 0) then
    IsLeapYear := false
    else if ((myyear mod 100) = 0) then
    IsLeapYear := ((myyear mod 400) = 0)
    else
    IsLeapYear := true;

    numbervar array numArray1;

    if (IsLeapYear) then
    numArray1 := DaysToMonth366
    else
    numArray1 := DaysToMonth365;


    numberVar num1 := int( myyear - 1);
    numberVar num2 := int(((((((num1 * 365) + (num1 / 4)) - (num1 / 100)) + (num1 / 400)) + numArray1[mymonth]) + myday) - 1);
    numberVar num4 := num2 + 1;
    numberVar PersianYear := int((((num4 - 226894) * 33) / (12053)))+ 1;

    numberVar numtmp2 :=int( (PersianYear - 1) / 33);
    numberVar yeartmp := int((PersianYear - 1) mod 33);
    numberVar num5 := (numtmp2 * 12053) + 226894;
    while (yeartmp > 0) do
    (
    num5 := num5 + 365;
    if (LeapYears33[(yeartmp Mod 33)+1] = 1) then
    num5 := num5 + 1;
    yeartmp := yeartmp - 1
    );
    numberVar num6;
    num5;
    if (PersianYear = 9378) then
    num6 := DaysToMonth[10] + 10
    else if (LeapYears33[(PersianYear Mod 33)+1] <> 1) then
    num6 := 365
    else
    num6 := 366;

    if (num4 < num5) then
    (
    num5 := num5 - num6;
    PersianYear := PersianYear - 1;
    )
    else if (num4 = num5) then
    (
    PersianYear := PersianYear - 1;
    numberVar temp;
    if (PersianYear = 9378) then
    temp := DaysToMonth[10] + 10
    else if (LeapYears33[(PersianYear mod 33)+1] <> 1) then
    temp := 365
    else
    temp := 366;
    num5 := num5 - temp
    )
    else if (num4 > (num5 + num6)) then
    (
    num5 := num5 + num6;
    PersianYear:=PersianYear+1
    );


    num4:= num4 - num5;
    numberVar num12 := 0;
    while ((num12 < 12) and (num4 > DaysToMonth[num12+1])) do
    (
    num12:=num12+1;
    );
    numberVar num3 := int(num4) - DaysToMonth[num12];
    Stringvar Text :=Cstr( PersianYear,'0000')+'/'+Cstr(num12,'00')+'/'+Cstr(num3,'00');

    )

    يه تابعه و طريقه استفاده از اون هم ...
    ConvertDateToPersianDate(CurrentDate );

    اين هم لينك كد C#‎
    https://barnamenevis.org/showth...766#post939766

  2. #2
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: تبديل تاريخ ميلادي به شمسي با تابع

    سلام
    تحت دات نت کلاس PersianCalendar تبدیل شمسی به میلادی و بالعکس را انجام میدهد

  3. #3

    نقل قول: تبديل تاريخ ميلادي به شمسي با تابع

    کد مورد نظر رو باید در کجا قرار بدم؟
    ConvertDateToPersianDate(CurrentDate );

  4. #4

    نقل قول: تبديل تاريخ ميلادي به شمسي با تابع

    نقل قول نوشته شده توسط maya2010 مشاهده تاپیک
    کد مورد نظر رو باید در کجا قرار بدم؟
    ConvertDateToPersianDate(CurrentDate );
    يه فرموله بسازيد
    تو قسمتReport Custom Function يه تابه بسازيد (مثل عكس)
    بعد كد تابع اونجا كپي كنيد و ذخيره كنيد (مثل عكس)
    حالا يه فرموله بسازيد و از تابع استفاده كنيد ورودي تابع date (مثل عكس)
    بعد فرموله رو به گزارشتون اضافه كنيد
    عکس های ضمیمه عکس های ضمیمه

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •