نحوه کنترل فرمت صحیح تاریخ شمسی در سی شارپ
سلام
توی پروژه ام تاریخ رو به صورت 1398/11/21 دارم. حالا می خوام کنترل کنم که فرمت تاریخ دقیقا همینه و چیزی جز این نیست. یعنی اگر جز این بود می خوام خطا نمایش بدم.
مثلا موارد زیر جزو غلط ها هستن
1398/11
1398/1/1
1398/000
1398//
و ...
می خوام موقع ثبت اطلاعات توی دیتابیس مطمین باشم دقیقا همین فرمت رعایت شده. کد زیر رو نوشتم ولی جواب نمیده
string DateShamsi = "1398";
if (DateShamsi != string.Format("yyyy/MM/dd"))
{
}
الان فرمت تاریخ در مثال بالا اشتباه هست و میخوام کنترل بشه این موضوع. ممنون میشم بفرمایید چجوری باید فرمت یک رشته رو کنترل کنم.
پاسخ هوش مصنوعی
برای کنترل فرمت تاریخ شمسی به صورت `yyyy/MM/dd` در سی شارپ، می توانید از عبارات منظم (Regular Expressions) استفاده کنید. در زیر یک مثال از کدی که می توانید برای انجام این کار استفاده کنید آورده شده است:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string dateShamsi = "1398/11/21";
string pattern = @"^\d{4}/(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])$";
if (!Regex.IsMatch(dateShamsi, pattern))
{
Console.WriteLine("فرمت تاریخ صحیح نیست.");
}
else
{
Console.WriteLine("فرمت تاریخ صحیح است.");
}
}
}
در این کد، از الگوی عبارات منظم زیر استفاده شده است:
@"^\d{4}/(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])$"
این الگو بررسی می کند که آیا رشته تاریخ دقیقا شامل چهار رقم سال، یک `/`، دو رقم برای ماه (که باید بین 01 تا 12 باشند)، یک `/` دیگر و دو رقم برای روز (که باید بین 01 تا 31 باشند) است یا خیر.
شما می توانید مقدار `dateShamsi` را به تاریخ مد نظر خود تغییر دهید و با اجرای برنامه، صحت فرمت آن را بررسی کنید.
سلام. برای این کار ابتدا کد زیر را در بدنه نرم افزار قرار دهید تا در همه فرم ها به اون دسترسی داشته باشید.
public static bool CheckDateFormat(string Date)
{
try
{
if (Date.Length != 10) { return false; } /// چک می کند که تعداد رشته تاریخ حتما 10 رقمی باشد
System.String[] userDateParts = Date.Split(new[] { "/" }, System.StringSplitOptions.None);
int Year = int.Parse(userDateParts[0]);
int Month = int.Parse(userDateParts[1]);
int Day = int.Parse(userDateParts[2]);
if (Year < 1300) { return false; } /// در این قسمت میتوانید مقدار وارد شده سال را کنترل کنید
if (Month > 12 || Month < 1) { return false; } /// در این قسمت میتوانید مقدار وارد شده ماه را کنترل کنید
if (Day > 31 || Day < 1) { return false; } /// در این قسمت میتوانید مقدار وارد شده روز را کنترل کنید
return true;
}
catch (Exception)
{
return false;
}
}
دقت داشته باشید که کد فوق مواردی رو که گفتید چک میکنه به علاوه اینکه چک میکنه که ماه وارد شده بین 1 تا 12 و روز وارد شده بین 1 تا 31 باشه. یا مثلا چک میکنه که سال وارده کوچکتر از 1300 نباشه! که این کنترل ها رو میتونید حذف هم بکنید یا تغییر بدید. همین طور شما میتونید طبق الگو هر نوع کنترل دیگه ای که دوست دارید روی اون بذارید.
با فرض اینکه کلاسی که در بدنه فرم ایجاد کردید نام PublicVariable داشته باشد می توانید با کد زیر فرمت تاریخ خودتون رو چک کنید.
string DateShamsi = "1398";
if (PublicVariable.CheckDateFormat(DateShamsi) == false)
{
MessageBox.Show("فرمت تاریخ صحیح نیست");
return;
}
کد رو استفاده بفرمایید و چنانچه هنوز مشکلی داشتید در خدمتم.
موفق باشید.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول