AmirAmiri
جمعه 21 اسفند 1388, 19:17 عصر
سلام دوستان این کلاس PersianCalnendar تا چه حد درست کار میکنه؟
آخه من یه کلاس برای تبدیل تاریخ میلادی به شمسی و بلعکس یعنی شمسی به میلادی درست کردم اما نمیدونم چرا وقتی از میلادی به شمسی تبدیل میکنم دو روز اختلاف داره و دو روز بعد رو میده.
کلاسی که نوشتم رو اینجا میزارم اگه ممکنه تست کنید و راهنمایی کنید.
من میخوام از کلاس استفاده کنم و نه از DLL چون میخوام تو خوده برنامه اضافه کنم. کلا نمیخوام با استفاده از DLL باشه برای همین این کلاس رو نوشتم و از همه مهم تر اینکه میخوام قابلیت تبدیل بلعکس یعنی از شمسی به میلادی رو هم داشته باشه که اینجا تو این کلاسی که نوشتم داره اما مشکل همونه که گفتم.
حالا از دوستان هر کی میتونه کمک کنه چون خیلی لازم دارم.
کلاسی که نوشتم اینه:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;
using System.Runtime.InteropServices;
namespace Curtain_Shops
{
/// <summary>
/// Date Convertor.
/// Convert Gregorian to Hijri Solar.
/// Convert Hijri Solar to Gregorian.
/// Created by Amir Amiri.
/// </summary>
class DateConvertor
{
private PersianCalendar Persian = new PersianCalendar();
private DateTime dt;
/// <summary>
/// Convert System Gregorian Date to Hijri Solar Date.
/// </summary>
/// <returns>Return Hijri Solar Date in DateTime Data Type.</returns>
public DateTime ToHijri()
{
int pYear = Persian.GetYear(DateTime.Now);
int pMonth = Persian.GetMonth(DateTime.Now);
int pDay = Persian.GetDayOfMonth(DateTime.Now);
return new DateTime(pYear, pMonth, pDay); ;
}
/// <summary>
/// Convert Gregorian Entered Date to Hijri Solar Date.
/// </summary>
/// <param name="Year">Enter Gregorian Year.</param>
/// <param name="Month">Enter Gregorian Month.</param>
/// <param name="Day">Enter Gregorian Day.</param>
/// <returns>Return Hijri Solar Date in DateTime Data Type.</returns>
public DateTime ToHijri(int Year, int Month, int Day)
{
dt = new DateTime(Year, Month, Day);
int pYear = Persian.GetYear(dt);
int pMonth = Persian.GetMonth(dt);
int pDay = Persian.GetDayOfMonth(dt);
return new DateTime(pYear, pMonth, pDay); ;
}
/// <summary>
/// Convert Gregorian Entered Date to Hijri Solar Date.
/// </summary>
/// <param name="Date">Enter Gregorian DateTime. For Example (DateTime.Now)</param>
/// <returns>Return Hijri Solar Date in DateTime Data Type.</returns>
public DateTime ToHijri(DateTime Date)
{
int pYear = Persian.GetYear(Date);
int pMonth = Persian.GetMonth(Date);
int pDay = Persian.GetDayOfMonth(Date);
return new DateTime(pYear, pMonth, pDay); ;
}
/// <summary>
/// Convert Hijri Solar Entered Date to Gregorian Date.
/// </summary>
/// <param name="Date">Enter Hijri Solar DateTime.</param>
/// <returns>Return Gregorian Date in DateTime Data Type.</returns>
public DateTime ToGregorian(DateTime Date)
{
DateTime dt = Persian.ToDateTime(
Date.Year,
Date.Month,
Date.Day,
Date.Hour,
Date.Minute,
Date.Second,
Date.Millisecond);
return dt;
}
/// <summary>
/// Convert Hijri Solar Entered Date to Gregorian Date.
/// </summary>
/// <param name="Year">Enter Hijri Solar Year.</param>
/// <param name="Month">Enter Hijri Solar Month.</param>
/// <param name="Day">Enter Hijri Solar Day.</param>
/// <returns>Return Gregorian Date in DateTime Data Type.</returns>
public DateTime ToGregorian(int Year, int Month, int Day)
{
DateTime dt = Persian.ToDateTime(
Year,
Month,
Day,
DateTime.Now.Hour,
DateTime.Now.Minute,
DateTime.Now.Second,
DateTime.Now.Millisecond);
return dt;
}
}
}
آخه من یه کلاس برای تبدیل تاریخ میلادی به شمسی و بلعکس یعنی شمسی به میلادی درست کردم اما نمیدونم چرا وقتی از میلادی به شمسی تبدیل میکنم دو روز اختلاف داره و دو روز بعد رو میده.
کلاسی که نوشتم رو اینجا میزارم اگه ممکنه تست کنید و راهنمایی کنید.
من میخوام از کلاس استفاده کنم و نه از DLL چون میخوام تو خوده برنامه اضافه کنم. کلا نمیخوام با استفاده از DLL باشه برای همین این کلاس رو نوشتم و از همه مهم تر اینکه میخوام قابلیت تبدیل بلعکس یعنی از شمسی به میلادی رو هم داشته باشه که اینجا تو این کلاسی که نوشتم داره اما مشکل همونه که گفتم.
حالا از دوستان هر کی میتونه کمک کنه چون خیلی لازم دارم.
کلاسی که نوشتم اینه:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;
using System.Runtime.InteropServices;
namespace Curtain_Shops
{
/// <summary>
/// Date Convertor.
/// Convert Gregorian to Hijri Solar.
/// Convert Hijri Solar to Gregorian.
/// Created by Amir Amiri.
/// </summary>
class DateConvertor
{
private PersianCalendar Persian = new PersianCalendar();
private DateTime dt;
/// <summary>
/// Convert System Gregorian Date to Hijri Solar Date.
/// </summary>
/// <returns>Return Hijri Solar Date in DateTime Data Type.</returns>
public DateTime ToHijri()
{
int pYear = Persian.GetYear(DateTime.Now);
int pMonth = Persian.GetMonth(DateTime.Now);
int pDay = Persian.GetDayOfMonth(DateTime.Now);
return new DateTime(pYear, pMonth, pDay); ;
}
/// <summary>
/// Convert Gregorian Entered Date to Hijri Solar Date.
/// </summary>
/// <param name="Year">Enter Gregorian Year.</param>
/// <param name="Month">Enter Gregorian Month.</param>
/// <param name="Day">Enter Gregorian Day.</param>
/// <returns>Return Hijri Solar Date in DateTime Data Type.</returns>
public DateTime ToHijri(int Year, int Month, int Day)
{
dt = new DateTime(Year, Month, Day);
int pYear = Persian.GetYear(dt);
int pMonth = Persian.GetMonth(dt);
int pDay = Persian.GetDayOfMonth(dt);
return new DateTime(pYear, pMonth, pDay); ;
}
/// <summary>
/// Convert Gregorian Entered Date to Hijri Solar Date.
/// </summary>
/// <param name="Date">Enter Gregorian DateTime. For Example (DateTime.Now)</param>
/// <returns>Return Hijri Solar Date in DateTime Data Type.</returns>
public DateTime ToHijri(DateTime Date)
{
int pYear = Persian.GetYear(Date);
int pMonth = Persian.GetMonth(Date);
int pDay = Persian.GetDayOfMonth(Date);
return new DateTime(pYear, pMonth, pDay); ;
}
/// <summary>
/// Convert Hijri Solar Entered Date to Gregorian Date.
/// </summary>
/// <param name="Date">Enter Hijri Solar DateTime.</param>
/// <returns>Return Gregorian Date in DateTime Data Type.</returns>
public DateTime ToGregorian(DateTime Date)
{
DateTime dt = Persian.ToDateTime(
Date.Year,
Date.Month,
Date.Day,
Date.Hour,
Date.Minute,
Date.Second,
Date.Millisecond);
return dt;
}
/// <summary>
/// Convert Hijri Solar Entered Date to Gregorian Date.
/// </summary>
/// <param name="Year">Enter Hijri Solar Year.</param>
/// <param name="Month">Enter Hijri Solar Month.</param>
/// <param name="Day">Enter Hijri Solar Day.</param>
/// <returns>Return Gregorian Date in DateTime Data Type.</returns>
public DateTime ToGregorian(int Year, int Month, int Day)
{
DateTime dt = Persian.ToDateTime(
Year,
Month,
Day,
DateTime.Now.Hour,
DateTime.Now.Minute,
DateTime.Now.Second,
DateTime.Now.Millisecond);
return dt;
}
}
}