View Full Version : تبدیل رشته1386/6/9 به رشته1386/06/09
ameysams
دوشنبه 02 مهر 1386, 02:44 صبح
با سلام خدمت سروران غزیز چگونه باید رشته1386/6/9را به رشته ی1386/.6/.9 تبدیل نمود؟
باتشکر
choobin84
دوشنبه 02 مهر 1386, 05:27 صبح
از تابع split استفاده کنید
PC2st
دوشنبه 02 مهر 1386, 05:43 صبح
DateTime dt = new DateTime(2004, 2, 12);
this.Text = dt.ToString("MM/dd/yyyy");
ولی این برای تاریخ میلادی کار میکنه.
برای تاریخ فارسی، میتونید از این متد استفاده کنید:
private string ChangeDateStyle(string date)
{
string[] elements = date.Split('/');
if(elements.Length != 3 || elements[0].Length != 4 || elements[1].Length > 2 || elements[2].Length > 2)
{
throw new FormatException();
}
for(int i = 1; i < 3; i++)
{
if(elements[i].Length == 1)
{
elements[i] = "0" + elements[i];
}
else if(elements[i].Length == 0)
{
throw new FormatException();
}
}
return elements[0] + "/" + elements[1] + "/" + elements[2];
}
و مثلا برای استفاده از آن:
MessageBox.Show(ChangeDateStyle("1386/4/3"));
mahani
دوشنبه 02 مهر 1386, 09:33 صبح
اینم ساده ترین راهش
string str = "9/6/1386";
if (str[1] == '/')
str = str.Insert(0, "0");
if (str[4] == '/')
str = str.Insert(3, "0");
ameysams
دوشنبه 02 مهر 1386, 14:13 عصر
اینم ساده ترین راهش
string str = "9/6/1386";
if (str[1] == '/')
str = str.Insert(0, "0");
if (str[4] == '/')
str = str.Insert(3, "0");
با تشکر از پاسخ شما اما رشته به صورت 6/9/1386 است
delbarir
دوشنبه 02 مهر 1386, 15:40 عصر
اینم ساده ترین راهش
string str = "9/6/1386";
if (str[1] == '/')
str = str.Insert(0, "0");
if (str[4] == '/')
str = str.Insert(3, "0");
فکر کنم منظور چیز دیگه ای باشه مثلا اگه بخوایم 25/9/1386 رو به 25/09/1386 تبدیل کنیم چی؟
به نظر من باید تو رشته دنبال / بگردیم و اونو به سه تا رشته روز، ماه و سال تبدیل کنیم و اونوفق فرمت روز و ماه رو 2 حرفی کنیم (9 به 09) و بعد دوباره اونا رو با / به هم بچسبونیم
PC2st
دوشنبه 02 مهر 1386, 16:54 عصر
اون متدی که نوشته بودم اینکار ها رو میکنه، فقط کمی پیاده سازیش خوب نبود که اون رو هم درست کردم:
private static string FixDate(string date)
{
string[] elements = date.Split('/');
if(elements.Length != 3)
{
throw new FormatException("Date format is not valid.");
}
if(elements[0].Length != 4)
{
throw new FormatException("Year is not a 4 digit number.");
}
for(int i = 1; i < 3; i++)
{
if(elements[i].Length == 1)
{
elements[i] = "0" + elements[i];
}
else if(elements[i].Length == 0 || elements[i].Length > 2)
{
throw new FormatException("Day or Month is not valid.");
}
}
return string.Join("/", elements);
}
و مقادیر زیر بعنوان ورودی مجاز هست:
Console.WriteLine(FixDate("1386/12/3"));
Console.WriteLine(FixDate("1386/04/3"));
Console.WriteLine(FixDate("1386/4/03"));
مقادیر زیر مجاز نیست و خطای مرتبط با اشتباه انجام شده هم گزارش میشه:
1386/4/333
1386//3
1386/4/333
1386/4/
386/4/3
1386/3
فقط یک چیزی که هست، اینه که به معتبر بودن تاریخ کاری نداره...
mahani
دوشنبه 02 مهر 1386, 18:06 عصر
فکر کنم منظور چیز دیگه ای باشه مثلا اگه بخوایم 25/9/1386 رو به 25/09/1386 تبدیل کنیم چی؟
به نظر من باید تو رشته دنبال / بگردیم و اونو به سه تا رشته روز، ماه و سال تبدیل کنیم و اونوفق فرمت روز و ماه رو 2 حرفی کنیم (9 به 09) و بعد دوباره اونا رو با / به هم بچسبونیم
پست قبلیه من همین حالت رو هم جواب میده فقط بر عکسه (همه حالتها رو جواب میده)
با تشکر از پاسخ شما اما رشته به صورت 6/9/1386 است
درستش این میشه
string str = "1386/9/6";
if (str[6] == '/')
str = str.Insert(5, "0");
if (str.Length == 9)
str = str.Insert(8, "0");
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.