دسته بندی ها
17:32 1398/11/21

نحوه کنترل فرمت صحیح تاریخ شمسی در سی شارپ

مشخصات سوال کننده :
کاربر : pedram_khan     امتیاز کاربر : 277     رتبه کاربر : 6
دسته بندی : سی شارپ

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4549
هوش مصنوعی

پاسخ هوش مصنوعی

برای کنترل فرمت تاریخ شمسی به صورت `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` را به تاریخ مد نظر خود تغییر دهید و با اجرای برنامه، صحت فرمت آن را بررسی کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : Sowgandi 18:17 1398/11/21

سلام. برای این کار ابتدا کد زیر را در بدنه نرم افزار قرار دهید تا در همه فرم ها به اون دسترسی داشته باشید.

 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;
            }

کد رو استفاده بفرمایید و چنانچه هنوز مشکلی داشتید در خدمتم.

موفق باشید.

ویرایش شده در دوشنبه 21 بهمن 1398 ساعت 18:22:45
به این پاسخ امتیاز بدهید    4
امتیاز: 876 رتبه: 3
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود