دسته بندی ها
19:14 1398/09/03

مشکل تاریخ شمسی در ویندوز 7 در WPF

مشخصات سوال کننده :
کاربر : Alireza     امتیاز کاربر : 115     رتبه کاربر : 13
دسته بندی : سی شارپ WPF

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

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

برای رفع مشکل تاریخ شمسی در WPF، شما می توانید از کتابخانه هایی استفاده کنید که از نمایش تاریخ شمسی پشتیبانی می کنند. یکی از کتابخانه های معروف برای این کار PersianCalendar است که در .NET Framework وجود دارد.

شما می توانید یک کلاس کمکی ایجاد کنید تا تاریخ ها را به فرمت شمسی نمایش دهد. در زیر نمونه ای از کد برای تبدیل تاریخ میلادی به تاریخ شمسی در WPF آورده شده است:

using System;
using System.Globalization;
using System.Windows;

namespace YourNamespace
{
    public class PersianDateHelper
    {
        public static string ConvertToPersianDate(DateTime dateTime)
        {
            PersianCalendar persianCalendar = new PersianCalendar();
            int year = persianCalendar.GetYear(dateTime);
            int month = persianCalendar.GetMonth(dateTime);
            int day = persianCalendar.GetDayOfMonth(dateTime);
            return $"{year}/{month:D2}/{day:D2}"; // فرمت تاریخ شمسی
        }
    }
}

سپس می توانید این متد را در XAML یا کد پشت فراخوانی کنید. برای مثال:

private void ShowPersianDate()
{
    DateTime now = DateTime.Now;
    string persianDate = PersianDateHelper.ConvertToPersianDate(now);
    MessageBox.Show(persianDate); // نمایش تاریخ شمسی در یک پیام
}

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

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : Sowgandi 10:07 1398/09/04

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

ابتدا در بدنه فرم تابع زیر را قرار دهید.

 public string FormatStringDate(string OldDate)
        {
                string NewDate = "";

                System.String[] userDateParts = OldDate.Split(new[] { "/" }, System.StringSplitOptions.None);
                int Year = int.Parse(userDateParts[0]);
                int Month = int.Parse(userDateParts[1]);
                int Day = int.Parse(userDateParts[2]);
                NewDate = Year.ToString("0000") + Month.ToString("00") + Day.ToString("00");
                return NewDate;
        }

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

string NewDate = FormatStringDate(calender.Text);

با استفاده از قطعه کدهای بالا می تونید مشکل تاریخ شمسی در ویندوز 7 رو از بین ببرید تا تاریخ های شما به درستی کار بکنه. از قطعه کد بالا استفاده کنید و اگر مشکل حل نشد بفرمایید تا کدها رو بررسی کنیم.

ویرایش شده در چهارشنبه 6 آذر 1398 ساعت 08:35:32
به این پاسخ امتیاز بدهید    2
امتیاز: 876 رتبه: 3
پاسخ دهنده : Alireza 18:26 1398/09/08

سلام Sowgandi عزیز

این تابعی که گفتین

public string FormatStringDate(string OldDate)
        {
                string NewDate = "";

                System.String[] userDateParts = OldDate.Split(new[] { "/" }, System.StringSplitOptions.None);
                int Year = int.Parse(userDateParts[0]);
                int Month = int.Parse(userDateParts[1]);
                int Day = int.Parse(userDateParts[2]);
                NewDate = Year.ToString("0000") + Month.ToString("00") + Day.ToString("00");
                return NewDate;
        }

رو نوشتم و فرمت رو اینجوری نوشتم 

String.Format("{0:yyyy/MM/dd}", FormatStringDate(Calender.Text));

حل شد.

سپاس از راهنماییت.

ویرایش شده در جمعه 8 آذر 1398 ساعت 22:34:41
به این پاسخ امتیاز بدهید    1
امتیاز: 115 رتبه: 13
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود