TUTORIAL

How to: Convert Miladi to Shamsi in C#

Posted by Naser Gharachi Tutorials | C# Language August 14, 2007
This article show how we can convert Miladi to Shamsi in C#.
Reader Level:

How to convert Miladi to Shamsi in C#:

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

 

namespace WindowsApplication2

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

            //********* Test ************

            MessageBox.Show(Shamsi(2005, 8, 14).ToShortDateString());

            MessageBox.Show(todayShamsi().ToShortDateString());

        }

 

        private DateTime todayShamsi()

        {

            DateTime today;

            today = DateTime.Today;

            string year = today.Year.ToString();

            string month = today.Month.ToString();

            string day = today.Day.ToString();

            int Y = int.Parse(year);

            int M = int.Parse(month);

            int D = int.Parse(day);

            return Shamsi(Y, M, D);

        }

        private DateTime Shamsi(int Y, int M, int D)

        {

            if (Y == 0)

                Y = 2000;

            if (Y < 100)

                Y = Y + 1900;

            if (Y == 2000)

            {

                if (M > 2)

                {

                    DateTime Temp = new DateTime(Y, M, D);

                    Temp = Temp.AddDays(1);

                    Y = int.Parse(Temp.Year.ToString());

                    M = int.Parse(Temp.Month.ToString());

                    D = int.Parse(Temp.Day.ToString());

                }

            }

            if (M < 3 || (M == 3 && D < 21))

                Y = Y - 622;

            else Y = Y - 621;

            switch (M)

            {

                case 1: if (D < 21)

                    {

                        M = 10;

                        D = D + 10;

                    }

                    else

                    {

                        M = 11;

                        D = D - 20;

                    }

                    break;

 

                case 2: if (D < 20)

                    {

                        M = 11;

                        D = D + 11;

                    }

                    else

                    {

                        M = 12;

                        D = D - 19;

                    }

                    break;

 

                case 3:

                    if (D < 21)

                    {

                        M = 12;

                        D = D + 9;

                    }

                    else

                    {

                        M = 1;

                        D = D - 20;

                    }

                    break;

 

                case 4:

                    if (D < 21)

                    {

                        M = 1;

                        D = D + 11;

                    }

                    else

                    {

                        M = 2; D = D - 20;

                    }

                    break;

 

                case 5:

                    if (D < 22)

                    {

                        M = M - 3;

                        D = D + 10;

                    }

                    else

                    {

                        M = M - 2;

                        D = D - 21;

                    }

                    break;

 

                case 6:

                    if (D < 22)

                    {

                        M = M - 3;

                        D = D + 10;

                    }

                    else

                    {

                        M = M - 2;

                        D = D - 21;

                    }

                    break;

 

                case 7:

                    if (D < 23)

                    {

                        M = M - 3;

                        D = D + 9;

                    }

                    else

                    {

                        M = M - 2;

                        D = D - 22;

                    }

                    break;

 

                case 8:

                    if (D < 23)

                    {

                        M = M - 3;

                        D = D + 9;

                    }

                    else

                    {

                        M = M - 2;

                        D = D - 22;

                    }

                    break;

 

                case 9:

                    if (D < 23)

                    {

                        M = M - 3;

                        D = D + 9;

                    }

                    else

                    {

                        M = M - 2;

                        D = D - 22;

                    }

                    break;

 

                case 10:

                    if (D < 23)

                    {

                        M = 7;

                        D = D + 8;

                    }

                    else

                    {

                        M = 8;

                        D = D - 22;

                    }

                    break;

 

                case 11:

                    if (D < 22)

                    {

                        M = M - 3;

                        D = D + 9;

                    }

                    else

                    {

                        M = M - 2;

                        D = D - 21;

                    }

                    break;

 

                case 12:

                    if (D < 22)

                    {

                        M = M - 3;

                        D = D + 9;

                    }

                    else

                    {

                        M = M - 2;

                        D = D - 21;

                    }

                    break;

            }

            DateTime Temp1 = new DateTime(Y, M, D);

            return Temp1;

        }

    }

}

Login to add your contents and source code to this article
post comment
     
COMMENT USING
PREMIUM SPONSORS
Over-C is a holistic consortium of communications and technology specialists. We build, deploy and market both business as well as consumer products and solutions.
Get Career Advice from Experts
SPONSORED BY
  • PDF reports have never been easier to create. With our included WYSIWYG Designer, you can layout your reports, set up your data source and let DynamicPDF ReportWriter do the rest.
Get Career Advice from Experts