PDA

View Full Version : سوال: فرمت بندی تاریخ گرفته شده از MaskTextBox به صورت 0000/00/00



jafarpalideh
چهارشنبه 17 بهمن 1397, 08:57 صبح
سلام به همه.
یه MaskTextBox دارم که Mask ش رو اینجوری تنظیم کردم . 0000/00/00
با متد زیر هم اعتبار سنجیش میکنم که تاریخ درست وارد شده باشه :



public static bool isDateInCorrectFormat(string date)
{
try
{
int year, month, day;
year = int.Parse(date.Trim().Split('/')[0]);
month = int.Parse(date.Trim().Split('/')[1]);
day = int.Parse(date.Trim().Split('/')[2]);
DateTime dateTime = new DateTime(year, month, day, new PersianCalendar());
return true;
}
catch
{
return false;
}
}


ولی اگه کاربر تویه MaskTextBox اینجوری وارد کنه بازم ارور نمیده وارد میشه . 1397/11/1
من میخوام که تاریخ حتما به این صورت باشه :
1397/11/16

دلتنگ اسمان
چهارشنبه 17 بهمن 1397, 10:43 صبح
سلام
return DateTime.ToString("yyyy/MM/dd ")
یا

return PersianDateTime.ToString("yyyy/MM/dd")

jafarpalideh
چهارشنبه 17 بهمن 1397, 11:12 صبح
سلام
return DateTime.ToString("yyyy/MM/dd ")
یا

return PersianDateTime.ToString("yyyy/MM/dd")
من تاریخ رو توی دیتابیس به صورت رشته ذخیره میکنم . این جواب نمیده

mr.sirwan
چهارشنبه 17 بهمن 1397, 11:49 صبح
منظورت اینه به جای اعداد تک رقمی از 1 تا 9 که برای روز یا ماه وارد میشه، قبل از عدد، صفر قرار بگیره؟ مثلا تاریخ 1/1/1397 تبدیل بشه به 01/01/1397؟

ویرایش 1:
کد دوستمون درسته، شما که داری عمل تبدیل به تاریخ شمسی رو انجام میدی، همون تاریخ شمسی رو به رشته تبدیل کن

jafarpalideh
چهارشنبه 17 بهمن 1397, 12:13 عصر
منظورت اینه به جای اعداد تک رقمی از 1 تا 9 که برای روز یا ماه وارد میشه، قبل از عدد، صفر قرار بگیره؟ مثلا تاریخ 1/1/1397 تبدیل بشه به 01/01/1397؟



دقیقا همین رو میخوام .

این رو چطور آورده ؟متوجه نمیشم.


PersianDateTime

mr.sirwan
چهارشنبه 17 بهمن 1397, 12:14 عصر
اینجا که تبدیل تاریخ به شمسی رو انجام دادی:
DateTime dateTime = new DateTime(year, month, day, new PersianCalendar());
کافیه از همون متغیر dateTime استفاده کنی

jafarpalideh
چهارشنبه 17 بهمن 1397, 12:22 عصر
اینجا که تبدیل تاریخ به شمسی رو انجام دادی:
DateTime dateTime = new DateTime(year, month, day, new PersianCalendar());
کافیه از همون متغیر dateTime استفاده کنی
حل شد .
فقط به یه روش دیگه .
طول رشته رو شرط گذاشتم که اگه کمتر از 10 بود ارور بده به کاربر .



if (dateBegin.Length != 10)
{
MessageBox.Show("تاریخ را به درستی وارد نمایید");
txtDateBegin.Focus();
txtDateBegin.SelectAll();
return;
}

mr.sirwan
چهارشنبه 17 بهمن 1397, 12:40 عصر
به نظرم زیاد جالب نیس به خاطر یه صفر قرار ندادن به کاربر ارور بدی، در حالی که خودت سمت کدنویسی میتونی این مشکل رو حل کنی

jafarpalideh
چهارشنبه 17 بهمن 1397, 13:08 عصر
به نظرم زیاد جالب نیس به خاطر یه صفر قرار ندادن به کاربر ارور بدی، در حالی که خودت سمت کدنویسی میتونی این مشکل رو حل کنی
میتونی زحمت تبدیل متد بالا رو به صورتی که میگی رو بکشی ؟

mr.sirwan
چهارشنبه 17 بهمن 1397, 17:27 عصر
public static string isDateInCorrectFormat(string date)
{
try
{
int year, month, day;
year = int.Parse(date.Trim().Split('/')[0]);
month = int.Parse(date.Trim().Split('/')[1]);
day = int.Parse(date.Trim().Split('/')[2]);

DateTime dateTime = new DateTime(year, month, day, new PersianCalendar());

return dateTime.ToString("yyyy/MM/dd");
}
catch
{
return string.Empty;
}
}