انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: کلاس تبدیل تاریخ میلای به شمسی برای QT  (دفعات بازدید: 4539 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین solook

  • Full Member
  • *
  • ارسال: 219
با سلام..

دوستان اگر چنین کلاسی سراغ دارن معرفی کنن

یاعلی
« آخرین ویرایش: 01 بهمن 1389، 11:28 ق‌ظ توسط solook »

آفلاین solook

  • Full Member
  • *
  • ارسال: 219
کلاس تبدیل تاریخ میلای به شمسی برای QT
« پاسخ #1 : 01 بهمن 1389، 11:27 ق‌ظ »
بحمدلله خودم  پیداش کردم..

البته دو تا از توابع  همون Jalali Date  که برای php نوشته شده رو تبدیل به Qt  کردم


فایل :qdatejalali.h

#ifndef QDATEJALALI_H
#define QDATEJALALI_H
#include <QStringList>

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

#endif // QDATEJALALI_H


فایل :qdatejalali.cpp

#include "qdatejalali.h"

QDateJalali::QDateJalali()
{
    /*******************************************How to use:***********************************************\
#include "qdatejalali.h"
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);
      \*****************************************************************************************************/
}

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 && gy%100!=0) || (gy%400==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)%365;
       }
         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;
    }
« آخرین ویرایش: 01 بهمن 1389، 11:45 ق‌ظ توسط solook »

آفلاین RCLord

  • Sr. Member
  • *
  • ارسال: 411
  • جنسیت : پسر
    • پشت یک لحظه سکوت
پاسخ به: کلاس تبدیل تاریخ میلای به شمسی برای QT
« پاسخ #2 : 01 بهمن 1389، 12:03 ب‌ظ »
ممنون !!! ببخشید ما چگونه میتونیم تاریخ میلدی سیستم رو دریافت کنیم ؟ یعنی هروقت برنامه اجرا میشه تاریخ سیستم رو به تابع بدیم . بازم ممنون .
« هرگونه انتقاد سازنده ای را با کمال میل قبول میکنم »

آفلاین solook

  • Full Member
  • *
  • ارسال: 219
پاسخ به: کلاس تبدیل تاریخ میلای به شمسی برای
« پاسخ #3 : 01 بهمن 1389، 06:37 ب‌ظ »
برای دریافت تاریخ میلادی کامپیوتر از این کد استفاده کنید :
QDateTime date =QDateTime::currentDateTime();
date.toString("yyyy")  //سال
date.toString("MM")  //ماه
date.toString("dd") //روز

مثالش در داخل کدی که گذاشتم هست
« آخرین ویرایش: 01 بهمن 1389، 06:38 ب‌ظ توسط solook »

آفلاین RCLord

  • Sr. Member
  • *
  • ارسال: 411
  • جنسیت : پسر
    • پشت یک لحظه سکوت
پاسخ به: کلاس تبدیل تاریخ میلای به شمسی برای QT
« پاسخ #4 : 01 بهمن 1389، 06:52 ب‌ظ »
خیلی ممنون بابت کمکتون .
« هرگونه انتقاد سازنده ای را با کمال میل قبول میکنم »

آفلاین solook

  • Full Member
  • *
  • ارسال: 219
پاسخ به: کلاس تبدیل تاریخ میلای به شمسی برای QT
« پاسخ #5 : 01 بهمن 1389، 09:27 ب‌ظ »
البته این هنوز ناقصه کم کم باید اشتراکی کاملش کنیم !