Click here to Skip to main content
15,881,380 members
Articles / Programming Languages / C#

Persian Calendar with Simulated PHP Methods in C#

Rate me:
Please Sign up or sign in to vote.
3.28/5 (17 votes)
1 Jan 2009CPOL1 min read 47.3K   1.7K   14  
Generate Persian Calendar with simulated PHP methods
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>آموزش کلاس Mohammad Dayyan Calendar</title>
<style type="text/css">
<!--
body {
	color: #000000;
	background-color: #ECE9D8;
	font-family: Tahoma;
	font-size: 12px;
}
table {
	border: 1px solid #1B9100;
	width: 70%;
}
th {
	font-size: 16px;
	color: #000000;
	background-color: #CCCC00;
	direction:ltr;
	font-family: Arial, Helvetica, sans-serif;
}
td {
	direction:rtl;
	background-color: #D5CEA8;
}
.cp {
	font-size: 10px;
	text-align: center;
	color: #666666;
	clear: both;
	margin-top: 0px;
	margin-right: auto;
	margin-bottom: 0px;
	margin-left: auto;
}
pre {
	font-size: 12px;
}
.spot {
	color: #CC3300;
	background-color: #FBFCFD;
}
.blue {
	color: #0000FF;
}
textarea {
	direction: ltr;
	background-color: #EEEEEE;
	border: 1px solid #A3A3A3;
	width: 100%;
	text-align: left;
}
.td1 {
	background-color: #F4F4F4;
}
.td2 {
	background-color: #DEDEDE;
}
a:link {
	color: #0099FF;
	text-decoration: none;
}
a:visited {
	color: #0099FF;
	text-decoration: none;
}
a:hover {
	color: #0033FF;
	text-decoration: underline;
}
a:active {
	color: #0033FF;
	text-decoration: none;
}
-->
</style>
</head>
<body>
<table border="0" align="center" cellpadding="3" cellspacing="1">
  <tr>
    <th align="center">Mohammad Dayyan Calendar Class</th>
  </tr>
  <tr>
    <td align="right" valign="top"><br  />
      ابتدا باید فایل <span class="spot">MohammadDayyanCalendar.dll</span> را به Reference های پروژه خود اضافه کنید <br  />
      <br  />
    </td>
  </tr>
</table>
<br  />
<br  />
<br  />
<br  />
<br  />
<table border="0" align="center" cellpadding="3" cellspacing="1">
  <tr>
    <th align="center"><span class="blue">uint</span> Time()</th>
  </tr>
  <tr>
    <td align="right"><br  />
      تعداد ثانیه های سپری شده از اولین نیمه شب 1970 تا کنون (به زمان گرینویچ) را بر می گرداند<br  />
      توجه داشته باشید که <span class="spot">نوع عدد بازگشتی از این متد uint میباشد</span> <br  />
      <br  />
    </td>
  </tr>
  <tr>
    <td align="right">&nbsp;&nbsp;نمونه کد 1 : نمایش خروجی متد Time به صورت مداوم تا زمانی Ctrl+C را فشار دهید<br  />
      <br  />
      <textarea name="textfield" rows="10" wrap="off" id="textfield">using MohammadDayyanCalendar;
using System;
using System.Threading;

class Sample
{
    public static void Main()
    {
        MDCalendar mds = new MDCalendar();

        Console.WriteLine("For exit press Ctrl+C");
        Console.WriteLine();

        while (true)
        {
            Console.Write(mds.Time() + " -");            
            Thread.Sleep(1000);
            Console.CursorLeft = 0;

            Console.Write(mds.Time() + " \\");
            Thread.Sleep(1000);
            Console.CursorLeft = 0;

            Console.Write(mds.Time() + " |");
            Thread.Sleep(1000);
            Console.CursorLeft = 0;

            Console.Write(mds.Time() + " /");
            Thread.Sleep(1000);
            Console.CursorLeft = 0;
        }
    }
}</textarea>
      <br  />
      <hr align="center" style="width:60%; height:3px; background-color:#000000;" />
      <br  />
      &nbsp;&nbsp;نمونه کد 2 : نمایش تعداد ثانیه های سپری شده از اولین نیمه شب 1970 تا زمان محلی ایران <br  />
      &nbsp;&nbsp;برای این کار به خروجی تابع Time اختلاف زمانی ایران نسبت به گرینویچ را می افزاییم <br  />
      <br  />
      <textarea name="textfield" rows="10" wrap="off" id="textfield">using MohammadDayyanCalendar;
using System;
using System.Threading;

class Sample
{
    public static void Main()
    {
        MDCalendar mds = new MDCalendar();
        double tmp;

        Console.WriteLine("For exit press Ctrl+C");
        Console.WriteLine();

        while (true)
        {
            //IRAN = +3.5 GMT
            tmp = mds.Time() + (3.5 * 60 * 60);
            Console.Write(tmp);
            Console.CursorLeft = 0;
            Thread.Sleep(1000);
        }
    }
}</textarea>
    </td>
  </tr>
</table>
<br  />
<br  />
<br  />
<br  />
<br  />
<table border="0" align="center" cellpadding="3" cellspacing="1">
  <tr>
    <th align="center"><span class="blue">int</span> Mktime(<span class="blue">int</span> year, <span class="blue">int</span> month, <span class="blue">int</span> day, <span class="blue">int</span> hour, <span class="blue">int</span> minute, <span class="blue">int</span> second)</th>
  </tr>
  <tr>
    <td align="right"><br  />
      این متد اختلاف زمان ورودی تا اولین نیمه شب 1970 را به صورت ثانیه بر میگرداند <br  />
      توجه داشته باشید که <span class="spot">نوع عدد بازگشتی از این متد int میباشد</span> چون ممکن هست مقدار بازگشتی منفی نیز باشد <br  />
      <br  />
    </td>
  </tr>
  <tr>
    <td align="right">&nbsp;&nbsp;نمونه کد :<br  />
      <br  />
      <textarea name="textfield" rows="10" wrap="off" id="textfield">using System;
using MohammadDayyanCalendar;
using System.Threading;

class Sample
{
    public static void Main()
    {
        MDCalendar mds = new MDCalendar();

        int tmp = mds.Mktime(2002, 9, 1, 0, 0, 0);

        Console.WriteLine(tmp);
        Console.ReadKey();
    }
}</textarea>
    </td>
  </tr>
</table>
<br />
<br />
<br />
<br  />
<br  />
<table border="0" align="center" cellpadding="3" cellspacing="1">
  <tr>
    <th align="center"><span class="blue">string</span> Date(<span class="blue">string</span> Format, <span class="blue">double</span> Seconds)</th>
  </tr>
  <tr>
    <td align="right"><br  />
      تا اینجا شاید با خودتون گفته باشید خوب این متد های بالا به چه کار میان <br  />
      اما جواب این سوال : خروجی متد های بالا برای استفاده در تابع Date به کار میان <br  />
      حالا چطوری ، میگم ! <br  />
      تابع Date دو ورودی داره ، یکی از نوع String و دیگری از نوع Double <br  />
      این تابع تقریبا مشابه تابع Date در <span class="spot">PHP</span> می باشد ، یعنی Format ، شکل نمایش تاریخ و Seconds نیز خروجی یکی از دو تابع بالاست <br  />
      خروجی تابع Date ، تاریخ شمسی یا میلادی است که بستگی به فرمت ورودی دارد <br  />
    </td>
  </tr>
  <tr>
    <td align="right"><a href="#formats">فرمت های ورودی</a> :<br  />
      توجه شود که هر کاراکتری که خارج از کاراکترهای فرمت ورودی باشد عینا توسط متد Date برگردانده می شود <br  />
      <br  />
    </td>
  </tr>
  <tr>
    <td align="right">&nbsp;&nbsp;نمونه کد :<br  />
      <br  />
      <textarea name="textfield" rows="10" wrap="off" id="textfield">using System;
using MohammadDayyanCalendar;
using System.Threading;

class Sample
{
    public static void Main()
    {

        MDCalendar mds = new MDCalendar();
        double IranTime = mds.Time() + (3.5 * 60 * 60);

        Console.WriteLine(mds.Date("Y / m / D", IranTime));
        Console.WriteLine();

        while (true)
        {
            IranTime = mds.Time() + (3.5 * 60 * 60);
            Console.Write(mds.Date("h : i : s  A", IranTime));
            Console.CursorLeft = 0;
            Thread.Sleep(1000);
        }
    }
}</textarea>
    </td>
  </tr>
</table>
<br />
<br />
<br  />
<br  />
<br  />
<a name="formats" id="formats"></a><br />
<div align="center" style="font-family:Arial; font-size:18px; clear:both;"> فرمت های خروجی</div>
<br />
<table border="0" align="center" cellpadding="3" cellspacing="1" dir="ltr">
  <tr>
    <th align="center">مثال</th>
    <th align="center">خروجی</th>
    <th align="center">فرمت</th>
  </tr>
  <tr>
    <td align="center" class="td2">1380  ، 1357</td>
    <td align="center" class="td2">نمایش سال شمسی به صورت 4 رقمی</td>
    <td align="center" class="td2">Y</td>
  </tr>
  <tr>
    <td align="center" class="td1">86 ، 57 </td>
    <td align="center" class="td1">سال شمسی به صورت 2 رقمی</td>
    <td align="center" class="td1">y</td>
  </tr>
  <tr>
    <td align="center" class="td2">2008 ، 1999</td>
    <td align="center" class="td2">سال میلادی به صورت 4 رقمی</td>
    <td align="center" class="td2">Z</td>
  </tr>
  <tr>
    <td align="center" class="td1">فروردین ... اسفند</td>
    <td align="center" class="td1">نام کامل ماه شمسی</td>
    <td align="center" class="td1">M</td>
  </tr>
  <tr>
    <td align="center" class="td2">01 , 02 , ... , 12</td>
    <td align="center" class="td2">ماه شمسی به صورت عدد دو رقمی</td>
    <td align="center" class="td2">m</td>
  </tr>
  <tr>
    <td align="center" class="td1">ژانویه ... دسامبر</td>
    <td align="center" class="td1">نام ماههای سال میلادی به فارسی</td>
    <td align="center" class="td1">E</td>
  </tr>
  <tr>
    <td align="center" class="td2">01 ، 02 ، ... ، 12</td>
    <td align="center" class="td2">ماه میلادی به صورت عدد دو رقمی</td>
    <td align="center" class="td2">e</td>
  </tr>
  <tr>
    <td align="center" class="td1">January ... December</td>
    <td align="center" class="td1">نام ماههای سال میلادی به انگلیسی</td>
    <td align="center" class="td1">P</td>
  </tr>
  <tr>
    <td align="center" class="td2">01 ، 02 ، ... ، 31</td>
    <td align="center" class="td2">چندمین روز ماه شمسی به صورت یک عدد دو رقمی</td>
    <td align="center" class="td2">D</td>
  </tr>
  <tr>
    <td align="center" class="td1">01 ، 02 ، ... ، 30</td>
    <td align="center" class="td1">چندمین روز ماه میلادی به صورت یک عدد دو رقمی</td>
    <td align="center" class="td1">d</td>
  </tr>
  <tr>
    <td align="center" class="td2">شنبه ... جمعه</td>
    <td align="center" class="td2">نام روز هفته شمسی به صورت کامل</td>
    <td align="center" class="td2">W</td>
  </tr>
  <tr>
    <td align="center" class="td1">ش ، یک ، ... ، ج</td>
    <td align="center" class="td1">نام روز هفته شمسی به صورت کوتاه</td>
    <td align="center" class="td1">w</td>
  </tr>
  <tr>
    <td align="center" class="td2">Saturday , ... , Friday</td>
    <td align="center" class="td2">نام روز هفته میلادی</td>
    <td align="center" class="td2">F</td>
  </tr>
  <tr>
    <td align="center" class="td1">قبل از ظهر ، بعد از ظهر، ...</td>
    <td align="center" class="td1">قبل از ظهر و یا بعدازظهر را  نشان می دهد</td>
    <td align="center" class="td1">G</td>
  </tr>
  <tr>
    <td align="center" class="td2">AM , PM</td>
    <td align="center" class="td2"> AM یا PM را نشان می دهد</td>
    <td align="center" class="td2">A</td>
  </tr>
  <tr>
    <td align="center" class="td1">01 , 02 , ... , 23</td>
    <td align="center" class="td1">نمایش ساعت به صورت 24 ساعته دو رقمی</td>
    <td align="center" class="td1">H</td>
  </tr>
  <tr>
    <td align="center" class="td2">01 , 02 , ... , 12</td>
    <td align="center" class="td2">نمایش ساعت به صورت 12 ساعته دورقمی</td>
    <td align="center" class="td2">h</td>
  </tr>
  <tr>
    <td align="center" class="td1">01 , 02 , ... , 59</td>
    <td align="center" class="td1">نمایش دقیقه به صورت دو رقمی</td>
    <td align="center" class="td1">i</td>
  </tr>
  <tr>
    <td align="center" class="td2">01 , 02 , ... , 59</td>
    <td align="center" class="td2">نمایش ثانیه به صورت دو رقمی</td>
    <td align="center" class="td2">s</td>
  </tr>
</table>
<br  />
<br  />
<br  />
<br  />
<br  />
<table border="0" align="center" cellpadding="3" cellspacing="1">
  <tr>
    <th>موارد استفاده / مزایا</th>
  </tr>
  <tr>
    <td align="right"><br  />
      &nbsp;&nbsp;یک فاروم را در نظر بگیرید ، می خواهیم زمان ایجاد هر تاپیک را در دیتا بیس ثبت کنیم ، براحتی با تابع Time این کار انجام میشه و خروجی را در دیتا بیس ثبت میکنیم <br  />
      وقتی هم که بخواهیم تاپیک ها را نمایش دهیم لازم است که زمان ایجاد آنها را با هم مقایسه کنیم تا برای نوع Sort کردن تاپیک ها تصمیم بگیریم ، که با این روش تنها چند عدد از نوع uint را با هم مقایسه میکنیم و کار بسیار راحت میشود <br  />
    این روش در فاروم های <span class="spot">PHPBB</span> مورد استفاده قرار میگیرد <br  />    امیدوارم مورد استفاده شما هم قرار بگیره <br  /><br  />
    </td>
  </tr>
</table>
<br  />
<br  />
<br  />
<br  />
<div class="cp">
ممنون میشم انتقاد و ایراد های برنامه را به من بگین
<br  />
<br  />
<a href="http://www.mds-soft.persianblog.ir/" target="_blank">وب لاگ من</a> | Mds_Soft@yahoo.com &copy;</div>

</body>
</html>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Iran (Islamic Republic of) Iran (Islamic Republic of)
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions