PDA

View Full Version : تبدیل تاریخ شمسی (از نوع رشته ای) به DateTime



ramin149
شنبه 04 خرداد 1392, 15:32 عصر
با سلام به دوستان . من معمولا تاریخ شمسی را به صورت زیر به فرمت datetime تبدیل می کنم .


Convert.ToDateTime("1392/2/15")

که به درستی کار می کرد . اما الان این مقدار تاریخ را خطا می دهد . به نظر شما باید چه روشی را جایگزین کنم ؟؟؟


Convert.ToDateTime("1392/2/31")

متن خطا
String was not recognized as a valid DateTime

jigily
شنبه 04 خرداد 1392, 15:50 عصر
string monthname, daterooz1,dayname;
protected void Page_Load(object sender, EventArgs e)
{

DateTime d = DateTime.Now.Date;



public void dating(DateTime d)
{
System.Globalization.PersianCalendar Pc = new System.Globalization.PersianCalendar();
Int32 Year = Pc.GetYear(d);
Int32 Mouth = Pc.GetMonth(d);
Int32 Day = Pc.GetDayOfMonth(d);
Int32 hour = Pc.GetHour(d);
Int32 mintues = Pc.GetMinute(d);
if (Mouth == 1)
{
monthname = "فروردین";
}
if (Mouth == 2)
{
monthname = "اردیبهشت";
}
if (Mouth == 3)
{
monthname = "خرداد";
}
if (Mouth == 4)
{
monthname = "تیر";
}
if (Mouth == 5)
{
monthname = "مرداد";
}
if (Mouth == 6)
{
monthname = "شهریور";
}
if (Mouth == 7)
{
monthname = "مهر";
}
if (Mouth == 8)
{
monthname = "آبان";
}
if (Mouth == 9)
{
monthname = "آذر";
}
if (Mouth == 10)
{
monthname = "دی";
}
if (Mouth == 11)
{
monthname = "بهمن";
}
if (Mouth == 12)
{
monthname = "اسفند";
}



daterooz1 ="امروز"+ Day.ToString() + " " + monthname +" " +Year.ToString();

tooraj_azizi_1035
شنبه 04 خرداد 1392, 21:09 عصر
فرمتی که به شما میده میلادی هست. به شما معادل میلادیش رو نمیده بلکه سعی میکنه Date رو Parse کنه.
شما نمی تونید مقداری خارج از بازه DateTime.MinValue و DateTime.MaxValue به اون بدید.

ramin149
یک شنبه 05 خرداد 1392, 09:07 صبح
فرمتی که به شما میده میلادی هست. به شما معادل میلادیش رو نمیده بلکه سعی میکنه Date رو Parse کنه.
شما نمی تونید مقداری خارج از بازه DateTime.MinValue و DateTime.MaxValue به اون بدید.
به نظر شما بهترین راه حل برای رفع این مشکل چی هست ؟؟؟

ahmad156
یک شنبه 05 خرداد 1392, 09:56 صبح
http://barnamenevis.org/showthread.php?306418-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D8%B4%D9%85%D8%B3%DB%8C-%D8%A8%D9%87-%D9%85%DB%8C%D9%84%D8%A7%D8%AF%DB%8C-%D9%88-%D8%A8%D8%A7%D9%84%D8%B9%DA%A9%D8%B3-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-Extension-Methods&highlight=topersiandatetime

tooraj_azizi_1035
یک شنبه 05 خرداد 1392, 12:01 عصر
System.Globalization.PersianCalendar p = new System.Globalization.PersianCalendar();
DateTime date = DateTime.Today;
int year = p.GetYear(date);
int month = p.GetMonth(date);
int day = p.GetDayOfMonth(date);
DateTime d1 = new DateTime(year, month, day);

ramin149
یک شنبه 05 خرداد 1392, 12:49 عصر
دوستان عزیز تاریخ پیش فرض من شمسی نه میلادی . تمام مثال های که نوشتید تاریخ پیش فرض شما میلادی است و دارید از DateTime.Now استفاده می کنید . مثلا من از یک کاربر یک تاریخ شمسی می گیرم و می خواهم آن را به datetime تبدیل کنم و سپس تاریخ آن را میلادی کنم و در دیتابیس دخیره کنم .

ahmad156
یک شنبه 05 خرداد 1392, 12:58 عصر
موردی که بالا گفتم این امکان رو داره!