مهندسی آچار فرانسه!

دیگر توضیح ندارد!

مهندسی آچار فرانسه!

دیگر توضیح ندارد!

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

با تشکر از MRG که این کد رو از اکسل به سی تبدیل کرد

این کد از قبلی خیلی بهتره چون با تایم استمپ کار می کنه.



  #include <iostream>

using namespace std;
// مبدل میلادی به شمسی.
int main(int year, int month, int day)
{
    year = 2015;
    month = 11;
    day = 1;

    // تبدیل تاریخ به زمانمهر
    // تفاوت از 1/1/1900 با فرض اینکه 1/1/1900 معادل با 1 است.
    int currentTimeStamp = 1;//41579;
    int isLeap = 0;
    int sumOfDayNormalYear[] = {0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
    int sumOfDayNormalLeapYear[]= {0, 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335};

    for (int i = 1901; i <= year; i++)
    {
        if(((i % 100)!= 0 && (i % 4) == 0) || ((i % 100)== 0 && (i % 400) == 0))
        {
            currentTimeStamp += 366;
            isLeap = 1;
        }
        else
        {
            currentTimeStamp += 365;
            isLeap = 0;
        }
    }
   
    if(isLeap)
        currentTimeStamp += sumOfDayNormalLeapYear[month];
    else
        currentTimeStamp += sumOfDayNormalYear[month];

    currentTimeStamp += day;
   
    int diff = currentTimeStamp - 7385;
    int diff100 = 100*diff;
   
    int shamsiYear =(int) (diff100 / 36525) + 1299;

    int shamsiMonth = 0;
    int shamsiDay = 0;

    if ((int)((diff100 % 36525) / 100) < 186)
    {
        shamsiMonth = ((int)((diff100 % 36525) / 100)) / 31;
        shamsiDay = ((int)((diff100 % 36525) / 100)) % 31 + 1;
    }
    else if ((int)(diff100 / 36525) % 4 == 0)
    {
        shamsiMonth = ((int)((diff100 % 36525) / 100) - 186) / 30 + 6;
        shamsiDay = ((int)((diff100 % 36525) / 100) - 186) % 30 + 1;
    }
    else if ((int)((diff100 % 36525) / 100) < 336)
    {
        shamsiMonth = ((int)((diff100 % 36525) / 100) - 186) / 30 + 6;
        shamsiDay = ((int)((diff100 % 36525) / 100) - 186) % 30 + 1;
    }
    else
    {
        shamsiMonth = (((int)((diff100 % 36525) / 100) - 336)) / 29 + 11;
        shamsiDay = (((int)((diff100 % 36525) / 100) - 336)) % 29 + 1;
    }

    shamsiMonth = shamsiMonth % 12 + 1;

    cout << shamsiYear <<"/"<< shamsiMonth <<"/" << shamsiDay ;
    return 0;
}

نظرات 1 + ارسال نظر
نظافت نیوز 26 اسفند 1398 ساعت 16:07 http://nezafatnews.ir/

مطلب جالبی بود موفق باشید

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد