انجمنهای فارسی اوبونتو
		کمک و پشتیبانی => برنامهسازی => نویسنده: solook در 01 بهمن 1389، 07:11 قظ
		
			
			- 
				با سلام..
 
 دوستان اگر چنین کلاسی سراغ دارن معرفی کنن
 
 یاعلی
- 
				بحمدلله خودم  پیداش کردم..
 
 البته دو تا از توابع  همون 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;
 }
 
- 
				ممنون !!! ببخشید ما چگونه میتونیم تاریخ میلدی سیستم رو دریافت کنیم ؟ یعنی هروقت برنامه اجرا میشه تاریخ سیستم رو به تابع بدیم . بازم ممنون .
			
- 
				برای دریافت تاریخ میلادی کامپیوتر از این کد استفاده کنید :
 QDateTime date =QDateTime::currentDateTime();
 date.toString("yyyy")  //سال
 date.toString("MM")  //ماه
 date.toString("dd") //روز
 
 مثالش در داخل کدی که گذاشتم هست
- 
				خیلی ممنون بابت کمکتون .
			
- 
				البته این هنوز ناقصه کم کم باید اشتراکی کاملش کنیم !