نمایش نتایج 1 تا 40 از 89

نام تاپیک: توابع تبدیل تاریخ با دقت 5000 سال تست شده با تقویم رسمی ایران http://www.time.ir

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر دائمی آواتار hector2000
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    پرشین ساینس
    پست
    227

    نقل قول: توابع تبدیل تاریخ با دقت 5000 سال تست شده با تقویم رسمی ایران http://www.time.ir

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


    function MiladiToShamsi(N:tdate):string;

    const
    W : array[1..7] of widestring = ('یکشنبه','دوشنبه','سه شنبه','چهارشنبه','پنجشنبه','ج عه','شنبه');
    Mon : array[1..12] of widestring = ('فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند');
    var
    days,Y,D,M:integer;
    begin

    days:= DaysBetween(N,EncodeDate(1900,1,1));
    days :=days + 2112;
    Y := 1273;
    M := 0;
    D := 0;

    Y := Y + Trunc(days / 12053) * 33;
    days := days mod 12053;

    Y := Y + Trunc(days / 1461) * 4;
    days := days mod 1461;

    if (days = 1460)then
    begin
    Y := Y + 3;
    days := 365;
    end
    else
    begin
    Y := Y + Trunc(days / 365);
    days := days mod 365;
    end;



    if (days < 186)then
    begin
    M := Trunc(days / 31) + 1;
    D := days mod 31 + 1;
    end
    else
    begin
    M := Trunc((days - 186) / 30) + 7;
    D := (days - 186) mod 30 + 1;
    end;
    result:= inttostr(Y)+' ' + Mon[M] + ' ' + Inttostr(D)+ ' ' + W[DayOfWeek(N)];
    end;



    طریقه استفاده:

    Label1.caption:=MiladiToShamsi(date);

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

    Question نقل قول: توابع تبدیل تاریخ با دقت 5000 سال تست شده با تقویم رسمی ایران http://www.time.ir

    با سلام خدمت جناب آقای زالی
    احتراما در رابطه با تبدیل تاریخ میلادی به شمسی به مشکل زیر مواجه شدم.
    در برنامه مورد نظر با تابع()GetDate اس کیو ال 2012 تاریخ سرور را بدست آورده و سپس از تابع تبدیل تاریخ میلادی به شمسی استفاده مینمایم و نتیجه را در دیتا بیس ذخیره مینمایم. بعضی وقتها این تاریخ به صورت 1300/01/01 نمایش و ثبت میشود. البته به نظر من مربوط به ساختار تاریخ میلادی میباشدکه به صورت ماه/روز/سال تعریف شده است. میخواستم بدانم که آیا تاریخ میلادی باید جهت تبدیل به تاریخ فارسی از فرمت ماه/روز/سال باشد و یا فرمت روز/ماه/سال معتبر میباشد. توضیح بیشتر اینکه فقط بعضی وقتها این مشکل از طرف کلاینتها گزارش میشود. ضمن اینکه تاریخ 1300/01/01 در یونیت شما به عنوان تاریخ غیر معتبر معرفی شده است . متشکرم

  3. #3

    نقل قول: توابع تبدیل تاریخ با دقت 5000 سال تست شده با تقویم رسمی ایران http://www.time.ir

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

  4. #4
    کاربر دائمی
    تاریخ عضویت
    دی 1387
    محل زندگی
    اهواز
    پست
    945

    نقل قول: توابع تبدیل تاریخ با دقت 5000 سال تست شده با تقویم رسمی ایران http://www.time.ir

    نقل قول نوشته شده توسط یوسف زالی مشاهده تاپیک
    لازمه که هر دو حالت موجود باشه، حتی یونیت خود دلفی هم سورت نمی کنه.
    نیازی به این کار نیست. این کار برعهده برنامه نویسه.
    شما وقتی ورودی استاندارد تاریخ وارد می کنید در حقیقت دارید یک عدد وارد می کنید، اما اگر اون ورودی تبدیل به فرمت رشته ای بشه و فرمت رشته ای رو تبدیل به شمسی کنید، باید ترتیب روز ماه سال رو رعایت کنید.
    در این صورت احتمال داره تنظیمات زمان کلاینت مورد نظر اشکال داشته باشه.[/QUOTE]
    با سلام
    من به روش زیر اینکار را انجام میدهم. آیا اینکار درست است؟ در ضمن این کد تاریخ سرور را برمیگرداند پس احتمالا تنظیمات زمان کلاینت نباید روی آن تاثیر داشته باشد! خواهشمندم بیشتر راهنمایی بفرمائید.

    qryDateTimeServer.Close;
    qryDateTimeServer.SQL.Clear ;
    qryDateTimeServer.SQL.Add('SELECT GetDate() AS GD');
    qryDateTimeServer.Open;
    strDate:=Copy(qryDateTimeServer.FieldByName('GD'). Asstring,1,10);
    strDate:=Copy(strDate,7,4)+'/'+Copy(strDate,1,2)+'/'+Copy(strDate,4,2);
    mskTarikhSabtWahed.Text:=Date_GregorianToSolar(str Date);
    strTime:=Copy(qryDateTimeServer.FieldByName('GD'). Asstring,12,8);
    edtSaatKarbar.Text:=strTime;



تاپیک های مشابه

  1. تبدیل تاریخ میلادی به شمسی با توابع C#‎
    نوشته شده توسط rezabehman در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 6
    آخرین پست: جمعه 17 مرداد 1393, 10:31 صبح
  2. سوال: الگوریتم تبدیل تاریخ هجری به میلادی بدون ذکر سال
    نوشته شده توسط ahrimaneahurai در بخش C#‎‎
    پاسخ: 3
    آخرین پست: دوشنبه 01 فروردین 1390, 11:04 صبح
  3. سوال: الگوریتم این توابع تبدیل تاریخ ها
    نوشته شده توسط cs2007 در بخش PHP
    پاسخ: 1
    آخرین پست: جمعه 27 اردیبهشت 1387, 09:46 صبح
  4. توابع تبدیل تاریخ در SQLServer
    نوشته شده توسط saghari در بخش VB.NET
    پاسخ: 1
    آخرین پست: سه شنبه 03 بهمن 1385, 15:43 عصر

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

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

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