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

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

  1. #1
    کاربر دائمی آواتار majidbestgame
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    in Functions and Procedures
    پست
    122

    Smile دو تا تابع ساده برای تبدیل تاریخ میلادی به شمسی

    سلام خدمت تمامی دلفی کار های عزیز... شاید تا به حال براتون پیش اومده باشه که یک برنامه فارسی زبان نوشتید و نیاز به یک تاریخ شمسی داشتید که تو برنامتون نمایش داده بشه و به مشگل بر خوردید....همین مشگل برای خودم چند وقت پیش به وجود اومد که تصمیم گرفتم خودم این مشگل رو حل کنم واشه همین دست به کار شدم و دو تا تابع نوشتم که میشه گفت مشگلم را حل کرد امروز که داشتم سورس های دلفیمو زیرورو میکردم این کد رو دیدم گفتم بزار واسه برنامه نویس های عزیز بزارمش...از اساتید اگه این توابع نقصی داشتن خوشحال میشم راهنمایی بفرمایین....
    این تابع تاریخ شمسی رو به صورت عددی باز میگرداند:
    Function IntShamsiDate:String;
    var yy,mm,dd:word;
    yi,mi,di:integer;
    ys,ms,ds:string;
    begin
    decodedate(now,yy,mm,dd);

    yi:=yy-621;
    mi:=mm-3;

    case mm of
    1 :di:=dd+10;
    2 :di:=dd+11;
    3 :di:=dd+9;
    4 :di:=dd+11;
    5 :di:=dd+10;
    6 :di:=dd+10;
    7 :di:=dd+9;
    8 :di:=dd+9;
    9 :di:=dd+9;
    10 :di:=dd+8;
    11 :di:=dd+9;
    12 :di:=dd+9;
    end;


    if mi<=0 then
    begin
    mi:=12+mi;
    yi:=yi-1;
    end;

    if (mi>=1) and (mi<7) then
    begin
    if di>31 then
    begin
    di:=di-31;
    mi:=mi+1;
    end;
    End else
    if (mi>=7) and (mi<12) then
    begin
    if di>30 then
    begin
    di:=di-30;
    mi:=mi+1;
    end;
    end else if mi=12 then
    begin
    if di>29 then begin
    di:=di-29;
    mi:=1;
    yi:=yi+1;
    end;
    end;

    if mi<10 then begin
    ms:='0'+inttostr(mi);
    end else
    ms:=inttostr(mi);

    if di<10 then begin
    ds:='0'+inttostr(di);
    end else
    ds:=inttostr(di);

    result:=inttostr(yi)+'/'+ms+'/'+ds;
    End;

    این تابع تاریخ رو به صورت حروف باز میگرداند:
    function StrShamsiDate:String;
    var yy,mm,dd:word;
    yi,mi,di:integer;
    ys,ms,ds:string;
    begin
    decodedate(now,yy,mm,dd);

    yi:=yy-621;
    mi:=mm-3;

    case mm of
    1 :di:=dd+10;
    2 :di:=dd+11;
    3 :di:=dd+9;
    4 :di:=dd+11;
    5 :di:=dd+10;
    6 :di:=dd+10;
    7 :di:=dd+9;
    8 :di:=dd+9;
    9 :di:=dd+9;
    10 :di:=dd+8;
    11 :di:=dd+9;
    12 :di:=dd+9;
    end;


    if mi<=0 then
    begin
    mi:=12+mi;
    yi:=yi-1;
    end;

    if (mi>=1) and (mi<7) then
    begin
    if di>31 then
    begin
    di:=di-31;
    mi:=mi+1;
    end;
    End else
    if (mi>=7) and (mi<12) then
    begin
    if di>30 then
    begin
    di:=di-30;
    mi:=mi+1;
    end;
    end else if mi=12 then
    begin
    if di>29 then begin
    di:=di-29;
    mi:=1;
    yi:=yi+1;
    end;
    end;

    case Mi of
    1 :ms:='فروردين';
    2 :ms:='ارديبهشت';
    3 :ms:='خرداد';
    4 :ms:='تير';
    5 :ms:='مرداد';
    6 :ms:='شهريور';
    7 :ms:='مهر';
    8 :ms:='آبان';
    9 :ms:='آذز';
    10 :ms:='دي';
    11 :ms:='بهمن';
    12 :ms:='اسفند';
    end;

    case di of
    1 :ds:='يکم';
    2 :ds:='دوم';
    3 :ds:='سوم';
    4 :ds:='چهارم';
    5 :ds:='پنجم';
    6 :ds:='ششم';
    7 :ds:='هفتم';
    8 :ds:='هشتم';
    9 :ds:='نهم';
    10 :ds:='دهم';
    11 :ds:='يازده ام';
    12 :ds:='دوازده ام';
    13 :ds:='سيزده ام';
    14 :ds:='چهارده ام';
    15 :ds:='پانزده ام';
    16 :ds:='شانزده ام';
    17 :ds:='هفده ام';
    18 :ds:='هيجده ام';
    19 :ds:='نوزده ام';
    20 :ds:='بيستم';
    21 :ds:='بيست و يکم';
    22 :ds:='بيست و دوم';
    23 :ds:='بيست و سوم';
    24 :ds:='بيست و چهارم';
    25 :ds:='بيست و پنجم';
    26 :ds:='بيست وششم';
    27 :ds:='بيست و هفتم';
    28 :ds:='بيست و هشتم';
    29 :ds:='بيست و نهم';
    30 :ds:='سي ام';
    31 :ds:='سي و يکم';
    end;

    result:=ds+' '+ms+' '+inttostr(yi);

    end;

    اگه خواستی تشکر کنی دگمه تشکر سمت چپ پایین این پسته

  2. #2

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

    سپاس . نحوه نمایش چی؟؟؟؟؟؟؟ کدرو بزارید

  3. #3
    کاربر دائمی آواتار SayeyeZohor
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    ا-ص-ف-ه-ا-ن
    پست
    631

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

    اينم نحوه نمايش

    ShowMessage(IntShamsiDate);
    ShowMessage(StrShamsiDate);

  4. #4

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

    سلام
    با تشکر
    اين دو تابع با سالهاي کبيسه مشکل دارد.لطفا آنرا اصلاح نماييد.من نياز به تابعي که تاریخ را به صورت حروف باز میگرداند، دارم.
    ممنون

  5. #5

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

    نقل قول نوشته شده توسط kamran749 مشاهده تاپیک
    سلام
    با تشکر
    اين دو تابع با سالهاي کبيسه مشکل دارد.لطفا آنرا اصلاح نماييد.من نياز به تابعي که تاریخ را به صورت حروف باز میگرداند، دارم.
    ممنون
    کسي نبود جواب مرا بدهد.

  6. #6

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

    نقل قول نوشته شده توسط kamran749 مشاهده تاپیک
    کسي نبود جواب مرا بدهد.
    لطفا اگر کسي بلد است جواب بدهد.

  7. #7

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

    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  8. #8
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    963

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

    سلام
    من به یه تابع ساده نیاز دارم مثل تابع اول در این تاپیک.تست کردم خوب بود آقا یوسف یه تاپیک بلند بالا دارند که کلی خوندم نفهمیدم چه کار کنم.
    فقط میخوام یه خروجی مثل خروجی IntShamsiDate داشته باشم که با سالهای کبیسه مشکل نداشته باشه.(البته همین تابع امتحان کردم تاریخ رو درست برگردوند)

    ممکنه کسی تابع بالای صفحه رو تکمیل کنه؟

برچسب های این تاپیک

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

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