Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Persian
  4. کلاس تاریخ شمسی و قمری
Qt 6.11 is out! See what's new in the release blog

کلاس تاریخ شمسی و قمری

Scheduled Pinned Locked Moved Persian
3 Posts 3 Posters 2.9k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H Offline
    H Offline
    hosein
    wrote on last edited by
    #1

    p{direction:rtl; text-align:right}. سلام دوستان
    میخواستم بدونم هیچ کلاسی برا تاریخ شمسی و قمری هست ؟

    1 Reply Last reply
    0
    • A Offline
      A Offline
      absfrm
      wrote on last edited by
      #2

      p{direction:rtl;text-align:right;font-family:tahoma}. سلام
      بله هست

      jalali.h
      @
      #ifndef JALALI_H
      #define JALALI_H
      #include <QString>
      #include <QStringList>

      class QDateJalali
      {
      public:
      QDateJalali();
      int div(int a,int b);
      QStringList ToShamsi(QString year, QString month,QString day );
      };

      #endif // JALALI_H

      @

      jalali.cpp
      @

      int QDateJalali::div(int a,int b)
      {
      return (a / b);
      }

      QStringList QDateJalali::ToShamsi(QString year, QString month,QString day ){
      int g_y = year.toInt();
      int g_m = month.toInt();
      int g_d = day.toInt();
      QList<int> g_days_in_month,j_days_in_month ;
      g_days_in_month << 31 << 28 << 31 << 30 << 31 << 30 << 31 <<31 << 30 << 31<< 30 << 31;
      j_days_in_month <<31 <<31 <<31 << 31 << 31 << 31 << 30 << 30 << 30 << 30 << 30 << 29;
      int gy = g_y-1600;
      int gm = g_m-1;
      int gd = g_d-1;
      int g_day_no = 365*gy+div(gy+3,4)-div(gy+99,100)+div(gy+399,400);
      for (int i=0; i < gm; ++i)
      g_day_no += g_days_in_month[i];

         if (gm>1 && ((gy%4==0 && gy0!=0) || (gy@0==0)))
            /* leap and after Feb */
            g_day_no++;
         g_day_no += gd;
       int j_day_no = g_day_no-79;
       int  j_np = div(j_day_no, 12053); /* 12053 = 365*33 + 32/4 */
         j_day_no = j_day_no % 12053;
       int jy = 979+33*j_np+4*div(j_day_no,1461); /* 1461 = 365*4 + 4/4 */
         j_day_no %= 1461;
      
         if (j_day_no >= 366) {
            jy += div(j_day_no-1, 365);
            j_day_no = (j_day_no-1)65;
         }
           int ii;
         for (int i = 0; i < 11 && j_day_no >= j_days_in_month[i]; ++i){
            j_day_no -= j_days_in_month[i];
            ii=i;
        }
       int  jm = ii+2;
       int  jd = j_day_no+1;
         QStringList shamsi;
         shamsi << QString::number(jy) << QString::number(jm)<< QString::number(jd) ;
           return shamsi;
      }
      

      @

      utilize
      @
      //shamsi
      QString returndate(){
      QDateJalali Jalali;
      QDateTime date =QDateTime::currentDateTime();
      QStringList shamsi= Jalali.ToShamsi( date.toString("yyyy"), date.toString("MM"),date.toString("dd"));
      //QString JalailDate =shamsi.at(0)+"/"+shamsi.at(1)+"/"+shamsi.at(2);
      QString jdate = shamsi.at(0)+"-"+shamsi.at(1)+"-"+shamsi.at(2);
      return jdate;
      }
      @

      If You Want You Can!

      1 Reply Last reply
      0
      • S Offline
        S Offline
        Seyyed
        wrote on last edited by
        #3

        p{direction:rtl; text-align:right}. با سلام
        آقای فرهمند ممنون از کد شما. اما من توی استفاده بررسی کردم دیدم برای امسال که سال کبیسه هست اول فروردین تاریخ بهم می ریزد!!!
        علتش هم اینه که خط20 و خط32 را من نمی دونستم چی بنویسم بنظرم یه اشکال تایپیه
        gy@0==0چیه؟؟
        gy0!=0 چیه؟؟

        line20: if (gm>1 && ((gy%4==0 && gy0!=0) || (gy@0==0)))

        line32: j_day_no = (j_day_no-1)65;

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved