PDA

View Full Version : خطای تبدیل تاریخ



safari_m4
چهارشنبه 25 فروردین 1400, 12:11 عصر
سلام دوستان مشکل خطا در خط مشخص شده در کد ذیل چیست با تشکر از دوستان
public string ShamsiToMiladi(string ShamsiDate)
{
try
{
PersianCalendar PDate = new PersianCalendar();
int y = 0;
int m = 0;
int d = 0;
if (ShamsiDate.Length == 10)
{
y = int.Parse(ShamsiDate.Substring(0, 4));
m = int.Parse(ShamsiDate.Substring(5, 2));
d = int.Parse(ShamsiDate.Substring(8, 2));
}
else
{
return null;
}
return PDate.ToDateTime(y, m, d, 1, 1, 1, 1, 1).ToShortDateString();
}
catch (Exception ex)
{
throw (ex);
}
}

خطا در این کد می باشد و همه روشها را امتحان کردم ولی به نتیجه نرسیدم
return PDate.ToDateTime(y, m, d, 1, 1, 1, 1, 1).ToShortDateString();

the king
چهارشنبه 25 فروردین 1400, 17:42 عصر
سلام دوستان مشکل خطا در خط مشخص شده در کد ذیل چیست با تشکر از دوستان
public string ShamsiToMiladi(string ShamsiDate)
{
try
{
PersianCalendar PDate = new PersianCalendar();
int y = 0;
int m = 0;
int d = 0;
if (ShamsiDate.Length == 10)
{
y = int.Parse(ShamsiDate.Substring(0, 4));
m = int.Parse(ShamsiDate.Substring(5, 2));
d = int.Parse(ShamsiDate.Substring(8, 2));
}
else
{
return null;
}
return PDate.ToDateTime(y, m, d, 1, 1, 1, 1, 1).ToShortDateString();
}
catch (Exception ex)
{
throw (ex);
}
}

خطا در این کد می باشد و همه روشها را امتحان کردم ولی به نتیجه نرسیدم
return PDate.ToDateTime(y, m, d, 1, 1, 1, 1, 1).ToShortDateString();


public string ShamsiToMiladi (string ShamsiDate)
{
try
{
var PDate = new PersianCalendar();
var y = 0;
var m = 0;
var d = 0;
if ( ShamsiDate.Length == 10)
{
y = int.Parse (ShamsiDate.Substring (0, 4));
m = int.Parse (ShamsiDate.Substring (5, 2));
d = int.Parse (ShamsiDate.Substring (8, 2));
}
else
{
return null;
}
return PDate.ToDateTime (y, m, d, 0, 0, 0, 0). ToShortDateString();
}
catch (Exception ex)
{
throw (ex);
}
}


قالبی که ToShortDateString بر میگردونه بر اساس culture سیستم تعیین میشه لذا بر اساس تنظیمات ویندوز هر کاربری میتونه متفاوت باشه.
برای همین بهتره که از ToShortDateString استفاده نکنید، مثلا از ToString و InvariantCulture استفاده کنید تا قالب همیشه ثابت و مشخص باشه :

return PDate.ToDateTime (y, m, d, 0, 0, 0, 0) .ToString( "yyyy/MM/dd", CultureInfo.InvariantCulture);