آخرين پست هاي ارسالي انجمن ايران دلفي

دانلود رایگان کامپوننت های دلفی آکادمی دلفی
نمایش نتایج: از 1 به 14 از 14

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

  1. #1
    مدیرکل سایت admin آواتار ها
    تاریخ عضویت
    September 2008
    محل سکونت
    تهران ، آیسک
    سن
    34
    نوشته ها
    520
    تشکر ها
    246
    تشکر شده 244 بار در 157 ارسال.
    Blog Entries
    1

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

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

    کد:

    کد:
    Function MiladiToShamsi(var Year, Month, Day: Word): String;
    const
      count_days : array[1..12] of Byte = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    var
      i: Byte;
      st: String;
      day_year: Integer;
    begin
      day_year:= 0;
      for i:= 1 to month - 1 do
        day_year:= day_year + count_days;
      day_year:= day_year + day;
    
      if IsLeapYear(Year) and (month > 2) then
        Inc(day_year);
    
      if (day_year <= 79) then
      begin
        if ((Year - 1) mod 4 = 0) then
          day_year:= day_year + 11
        else
          day_year:= day_year + 10;
    
        Year:= Year - 622;
    
        if (day_year mod 30 = 0) then
        begin
          Month:= (day_year div 30) + 9;
          Day:= 30;
        end
        else
        begin
          Month:= (day_year div 30) + 10;
          Day:= day_year mod 30;
        end;
      end
      else
      begin
        year:= year - 621;
    
        day_year:= day_year - 79;
        if (day_year <= 186) then
        begin
          if (day_year mod 31 = 0) then
          begin
            Month:= (day_year div 31);
            Day:= 31;
          end
          else
          begin
            Month:= (day_year div 31) + 1;
            Day:= day_year mod 31;
          end;
        end
        else
        begin
          day_year:= day_year - 186;
          if (day_year mod 30 = 0) then
          begin
            Month:= (day_year div 30) + 6;
            Day:= 30;
          end
          else
          begin
            Month:= (day_year div 30) + 7;
            Day:= day_year mod 30;
          end;
        end;
      end;   // else  .
    
      st:= IntToStr(Year) + &quot;/&quot;;
      if (Month < 10) then
        st:= st + &quot;0&quot;;
      st:= st + IntToStr(Month) + &quot;/&quot;;
      if (Day < 10) then
        st:= st + &quot;0&quot;;
      st:= st + IntToStr(Day);
    
      Result:= st;
    end;
    دلفی ،*جذاب ترین زبان طراحی نرم افزار ...

  2. کاربر مقابل از admin عزیز به خاطر این پست مفید تشکر کرده است:

    b_e_shamlu (16 / April / 2016)

  3. #2
    کاربر سایت talaptolop آواتار ها
    تاریخ عضویت
    December 2013
    سن
    6
    نوشته ها
    2
    تشکر ها
    0
    تشکر شده 0 بار در 0 ارسال.
    نقل قول از admin
    اینم یک تابع واسه تبدیل تاریخ به شمسی

    کد:

    کد:
    Function MiladiToShamsi(var Year, Month, Day: Word): String;
    const
     *count_days : array[1..12] of Byte = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    var
     *i: Byte;
     *st: String;
     *day_year: Integer;
    begin
     *day_year:= 0;
     *for i:= 1 to month - 1 do
     * *day_year:= day_year + count_days;
     *day_year:= day_year + day;
    
     *if IsLeapYear(Year) and (month > 2) then
     * *Inc(day_year);
    
     *if (day_year <= 79) then
     *begin
     * *if ((Year - 1) mod 4 = 0) then
     * * *day_year:= day_year + 11
     * *else
     * * *day_year:= day_year + 10;
    
     * *Year:= Year - 622;
    
     * *if (day_year mod 30 = 0) then
     * *begin
     * * *Month:= (day_year div 30) + 9;
     * * *Day:= 30;
     * *end
     * *else
     * *begin
     * * *Month:= (day_year div 30) + 10;
     * * *Day:= day_year mod 30;
     * *end;
     *end
     *else
     *begin
     * *year:= year - 621;
    
     * *day_year:= day_year - 79;
     * *if (day_year <= 186) then
     * *begin
     * * *if (day_year mod 31 = 0) then
     * * *begin
     * * * *Month:= (day_year div 31);
     * * * *Day:= 31;
     * * *end
     * * *else
     * * *begin
     * * * *Month:= (day_year div 31) + 1;
     * * * *Day:= day_year mod 31;
     * * *end;
     * *end
     * *else
     * *begin
     * * *day_year:= day_year - 186;
     * * *if (day_year mod 30 = 0) then
     * * *begin
     * * * *Month:= (day_year div 30) + 6;
     * * * *Day:= 30;
     * * *end
     * * *else
     * * *begin
     * * * *Month:= (day_year div 30) + 7;
     * * * *Day:= day_year mod 30;
     * * *end;
     * *end;
     *end;