اطلاعیه

Collapse
No announcement yet.

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

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

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

    سلام
    خیلی گشتم که یه کتابخونه پیدا کنم برای کدویژن برای تبدیل تاریخ میلادی به شمسی و بر عکس
    اما چرب بوده گربه خورده انگار
    فقط دوتا پیدا شد که یکی فقط تبدیل میلادی به شمسی بود و یکی هم ارور بنی اسرائیلی میده

    خداییش حس برنامه نویسی ندارم وگرنه با بیسیک نوشتم اینا رو
    اگر کتابخونه آماده کسی داره لطف کنه کمکم کنه و بده تا کارم راه بیوفته
    ممنون

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

    پیدا کردی اینجا بذار حتی اگر سی باشه!خیلی دنبالش گشتم ولی حتی الگوریتم تبدیلش هم نبود یا اگر بود بدرد میکروکنترلر نمیخورد و شدیدا سنگین و پرحجم بود
    Aristar Group - Always And Forever

    دیدگاه


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

      خودم تست نکردم ولی به احتمال قوی درسته
      [code=c]
      flash unsigned char shmtable[6][12]={
      {11,10,10,9,9,9,8,9,9,10,11,9},
      {20,20,21,21,22,22,22,22,21,21,20,19},
      {11,10,10,9,9,9,8,9,9,10,11,10},
      {20,20,21,21,22,22,22,22,21,21,20,19},
      {12,11,11,10,10,10,9,10,10,11,12,10},
      {19,19,20,20,21,21,21,21,20,20,19,18}};

      flash unsigned char miltable[6][12]={
      {20,19,19,19,20,20,21,21,21,21,20,20},
      {10,11,10,12,11,11,10,10,10,9,10,10},
      {19,18,20,20,21,21,22,22,22,22,21,21},
      {11,12,10,11,10,10,9,9,9,8,9,9},
      {20,19,20,20,21,21,22,22,22,22,21,21},
      {10,11,9,11,10,10,9,9,9,8,9,9}};

      struct date{
      unsigned char day;
      unsigned char month;
      unsigned char year;
      };
      struct date shmdate,mildate ;
      /************************************************** ***********************/
      void miltoshmcv(unsigned char ym,unsigned char mm,unsigned char dm)
      {
      unsigned char k,t1,t2;
      k=ym%4;
      if(k==3)
      k=2;
      k*=2;
      t1=miltable[k][mm-1];
      t2=miltable[k+1][mm-1];
      if(mm<3 || (mm==3 && dm<=miltable[k][mm-1]))
      shmdate.year = ym + 78;
      else
      shmdate.year = ym + 79;

      if(dm<=t1)
      {
      shmdate.day=dm+t2;
      shmdate.month=(mm+8)%12+1;
      }
      else
      {
      shmdate.day=dm-t1;
      shmdate.month=(mm+9)%12+1;
      }
      }
      /************************************************** ********************/
      void shmtomilcv(unsigned char ys ,unsigned char ms,unsigned char ds)
      {
      unsigned char k,t1,t2;
      k = yss%4;
      if( k == 0)
      k = 2;
      else
      k = k + k;
      t1 =shmtable[k - 2][ms-1];
      t2 = shmtable[k-1][ms-1];
      if(ms<10 || (ms==10 && ds <= shmtable[k-2][ms-1]))
      mildate.year = ys - 79;
      else
      mildate.year = ys - 78;

      if(ds <= t1)
      {
      mildate.day = ds + t2;
      mildate.month = (ms + 1)%12 + 1;
      }
      else
      {
      mildate.day= ds - t1;
      mildate.month= (ms + 2)%12 + 1;
      }

      [/code]

      دیدگاه

      لطفا صبر کنید...
      X