صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 41

نام تاپیک: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

  1. #1
    کاربر دائمی آواتار majid_darab
    تاریخ عضویت
    مهر 1384
    محل زندگی
    در اعماق اقیانوس.
    سن
    34
    پست
    331
    تشکر کردن
    99
    64 بار تشکر شده در 44 پست

    تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    (ویرایش شده پس از پاسخ ها)
    با سلام :
    مدتی بود که تو سایت برنامه نویس نبودم و به تمامی دوستان سال جدید رو تبریک می گم...

    در حال حاضر آیا این امکان وجود دارد که در vs 2010 (دات نت فریم ورک 4) بدون استفاده از هیچ کلاس یا dll جانبی خاصی تاریخ شمسی را با امکانات خود .net 4 داشته باشیم؟
    چنانچه تنظیم یا روش خاصی (مثلا تغییر در properties خود پروژه) برای تاریخ شمسی وجود ندارد بهترین کلاس نوشته شده برای تقویم شمسی چیست؟(سوال 1)

    در مورد شمسی بودن 3 فاکتور وجود دارد :
    الف)کامپوننت تقویم
    ب)تاریخی که در یک لیبل نمایش داده می شه
    ج)فارسی کردن اعداد بکار رفته در لیبل و کامپوننت تقویم

    برای فارسی کردن اعداد بکار رفته در لیبل می توان رشته تاریخ لیبل را توسط متد خاصی گرفت و اعداد درون آن را فارسی کرد!
    به نظرم این کار زیاد جالب نیست.چون با تغییر ماهیت اعداد ما در حقیقت دیگر با عدد سروکارنداریم و امکان انجام محاسبات ریاضی
    روی این اعداد وجود ندارد.
    چگونه می توان این کار را با پروپرتی ها و متد های کلاس های PersianCalendar و CultureInfo و DateTimeFormatInfo انجام داد؟
    (سوال 2)

    در مورد کامپوننت تقویم چطور ؟ اول اینکه چطور شمسیش کنیم و دوم اینکه چطور اعداد داخل اونو مثل بالا به فرمت فارسی تبدیل کنیم.؟
    (سوال 3)


    با تشکر
    مجید داراب
    همیشه شاد و سلامت باشید
    آخرین ویرایش به وسیله majid_darab : دوشنبه 22 فروردین 1390 در 02:17 صبح

  2. 2 کاربر از majid_darab به خاطر این مطلب مفید تشکر کرده اند:


  3. #2
    کاربر دائمی آواتار majid_darab
    تاریخ عضویت
    مهر 1384
    محل زندگی
    در اعماق اقیانوس.
    سن
    34
    پست
    331
    تشکر کردن
    99
    64 بار تشکر شده در 44 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    من کلاس زیرو که توسط دوست خوبمون آقای محمد میرمصطفی در codeproject قرار داده شده بود پیدا کردم ...
    http://www.codeproject.com/KB/cs/PersianDateTime.aspx
    اما هنوز بررسیش نکردم و نمی دونم داره از امکانات vs 2010 استفاده می کنه و یا اینکه این کلاسو در گذشته در این قسمت قرار داده بود.

  4. 2 کاربر از majid_darab به خاطر این مطلب مفید تشکر کرده اند:


  5. #3
    Site Admin آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    تهران، خ شریعتی، باغ صبا
    سن
    40
    پست
    5,819
    تشکر کردن
    400
    5,998 بار تشکر شده در 1,444 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    بهترین گزینه برای استفاده از تاریخ شمسی در برنامه ها استفاده از کلاس PersianCalendar خود دات نت است. تنها مشکلی که وجود دارد عدم امکان استفاده از آن به عنوان تقویم پیش فرض برنامه است که نصب این افزونه: http://persianculture.codeplex.com
    محدودیت فوق برطرف می شود.
    پروژه های Open Source:


  6. 18 کاربر از مهدی کرامتی به خاطر این مطلب مفید تشکر کرده اند:


  7. #4
    مدیر بخش آواتار raziee
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    تهران
    سن
    28
    پست
    2,207
    تشکر کردن
    438
    2,060 بار تشکر شده در 757 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    نقل قول نوشته شده توسط DelphiAssistant مشاهده تاپیک
    بهترین گزینه برای استفاده از تاریخ شمسی در برنامه ها استفاده از کلاس PersianCalendar خود دات نت است. تنها مشکلی که وجود دارد عدم امکان استفاده از آن به عنوان تقویم پیش فرض برنامه است که نصب این افزونه: http://persianculture.codeplex.com
    محدودیت فوق برطرف می شود.
    جناب کرامتی برای نمایش اعداد فارسی چه بلایی باید سر کد هابیاریم؟
    آیا استفاده از اعداد فارسی امکان پذیر هست یا خیر؟

    info.NativeDigits = new string[] { "٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩" };

    کد بالا هیچ تاثیری ندارد.!!!
    CultureInfo currentCI = Thread.CurrentThread.CurrentCulture;
    NumberFormatInfo nfi = currentCI.NumberFormat;
    string[] nativeDigitList = nfi.NativeDigits;


    foreach (string s in nativeDigitList)
    {
    Response.Write(s + "<br/>");
    }

    اعداد درست Set میشند اما در اجرا هیچ تاثیری نداره.

    کسی دلیلش رو میدونه؟
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  8. #5
    کاربر دائمی آواتار majid_darab
    تاریخ عضویت
    مهر 1384
    محل زندگی
    در اعماق اقیانوس.
    سن
    34
    پست
    331
    تشکر کردن
    99
    64 بار تشکر شده در 44 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    نقل قول نوشته شده توسط raziee مشاهده تاپیک
    جناب کرامتی برای نمایش اعداد فارسی چه بلایی باید سر کد هابیاریم؟
    آیا استفاده از اعداد فارسی امکان پذیر هست یا خیر؟

    info.NativeDigits = new string[] { "٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩" };

    کد بالا هیچ تاثیری ندارد.!!!
    CultureInfo currentCI = Thread.CurrentThread.CurrentCulture;
    NumberFormatInfo nfi = currentCI.NumberFormat;
    string[] nativeDigitList = nfi.NativeDigits;


    foreach (string s in nativeDigitList)
    {
    Response.Write(s + "<br/>");
    }

    اعداد درست Set میشند اما در اجرا هیچ تاثیری نداره.

    کسی دلیلش رو میدونه؟


    با سلام و عرض خسته نباشید :
    من امروز کلی با کلاس های CultureInfo و PersianCalendar و DateTimeFormatInfo سروکله زدم.
    استنباط من اینه که culture پیش فرض vs به صورت fa-IR می باشد(به خاطر وجود زبان فارسی نصب شده در ویندوز)
    خوب پس culture پیش فرض شد fa-IR که داره از GregorianCalendar به صورت پیش فرض استفاده می کنه.
    کامپوننت تقویم هم داره براساس culture و تقویم پیش فرض عمل می کنه
    اگر در پروژه ی خود کد زیرور دی باگ کنید می بینید که بیشتر تنظیمات مورد نیاز ما در Culture فارسی وجود دارد !
    CultureInfo facultureinfo = new CultureInfo("fa-IR");

    از جمله اعدادی که ما به دنبال تبدیل اونها به فارسی هستیم (در قسمت NumberDigits) به صورت فارسی تنظیم شده اند.
    اما نمی دونم چرا همواره اعداد به صورت انگلیسی در خروجی نشان داده می شوند؟
    مورد بعدی اینه که وفتی کامپوننت تقویمو استفاده می کنیم به خاطر کالچر پیش فرض فارسی روزهای هفته را به جای انگلیسی با فارسی نشان می دهد (حرف اول روز) و یه جواریی شده تلفیقی از فرهنگ فارسی و تقویم انگلیسی
    برای درست شدن این قضیه باید culture را به en-US تغییر داد تا فرهنگ و تقویم همسان شوند.

    منتظر راهنمایی مدیران محترم هستیم...

    با تشکر از توجه شما
    آخرین ویرایش به وسیله majid_darab : دوشنبه 22 فروردین 1390 در 02:40 صبح

  9. #6
    کاربر دائمی آواتار majid_darab
    تاریخ عضویت
    مهر 1384
    محل زندگی
    در اعماق اقیانوس.
    سن
    34
    پست
    331
    تشکر کردن
    99
    64 بار تشکر شده در 44 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    با سلام :
    من افزونه ای که مدیر محترم کرامتی اعلام فرمودند را نصب کردم.
    ولی یه ریزه گیج شدم.
    زمانی که این افزونه نصب است چه اتفاقی در دات نت فریم ورک 4 (VS 2010) می افتد ؟
    بدون نصب افزونه از چه کدهایی باید در PAGE_LOAD استفاده نماییم و با افزونه چطور؟

    در لینک مورد نظر یه CONSOLE APP داشتیم که با دات نت فریم ورک 2 و 3.5 به خوبی در VS 2010 کار می کنه ، اما وفتی .NET FRAMEWORK رو به 4 تغییر می دیم در یک سری از خطوط ارور می دهد.(ارورها درکلاس PersianCultureHelper)
    کد مورد نظر در پروژه پس از اعمال تغییرات در نام گذاری ها به صورت زیر شد :

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Reflection;
    using System.Globalization;

    namespace PersianCulture
    {

    public static class PersianCultureHelper
    {
    //Represents a PropertyInfo that refer to ID of Calendar. The ID is private property of Calendar.
    private static PropertyInfo calendarID;

    //Represents a FieldInfo that refer to m_isReadOnly of CultureInfo. The m_isReadOnly is private filed of CultureInfo.
    private static FieldInfo cultureInfoReadOnly;

    //Represents a FieldInfo that refer to calendar of CultureInfo. The calendar is private filed of CultureInfo.
    private static FieldInfo cultureInfoCalendar;

    //Represents a FieldInfo that refer to isReadOnly of NumberFormatInfo. The isReadOnly is private filed of NumberFormatInfo.
    private static FieldInfo numberFormatInfoReadOnly;

    //Represents a FieldInfo that refer to m_isReadOnly of DateTimeFormatInfo. The m_isReadOnly is private filed of DateTimeFormatInfo.
    private static FieldInfo dateTimeFormatInfoReadOnly;

    //Represents a FieldInfo that refer to calendar of DateTimeFormatInfo. The calendar is private filed of DateTimeFormatInfo.
    private static FieldInfo dateTimeFormatInfoCalendar;

    //Represents a FieldInfo that refer to m_cultureTableRecord of DateTimeFormatInfo. The m_cultureTableRecord is private filed of DateTimeFormatInfo.
    //private static FieldInfo dateTimeFormatInfoCultureTableRecord;

    //Represents a MethodInfo that refer to UseCurrentCalendar of CultureTableRecord. The UseCurrentCalendar is private method of CultureTableRecord that the class is private too.
    //private static MethodInfo cultureTableRecordUseCurrentCalendar;

    /// <summary>
    /// Represents static constructor
    /// </summary>
    static PersianCultureHelper()
    {
    calendarID = typeof(Calendar).GetProperty("ID", BindingFlags.NonPublic | BindingFlags.Instance);
    cultureInfoReadOnly = typeof(CultureInfo).GetField("m_isReadOnly", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
    cultureInfoCalendar = typeof(CultureInfo).GetField("calendar", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
    numberFormatInfoReadOnly = typeof(NumberFormatInfo).GetField("isReadOnly", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
    dateTimeFormatInfoCalendar = typeof(DateTimeFormatInfo).GetField("calendar", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
    dateTimeFormatInfoReadOnly = typeof(DateTimeFormatInfo).GetField("m_isReadOnly" , BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
    //dateTimeFormatInfoCultureTableRecord = typeof(DateTimeFormatInfo).GetField("m_cultureTabl eRecord", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
    //Type cultureTableRecord = typeof(DateTimeFormatInfo).Assembly.GetType("Syste m.Globalization.CultureTableRecord");
    //cultureTableRecordUseCurrentCalendar = cultureTableRecord.GetMethod("UseCurrentCalendar", BindingFlags.NonPublic | BindingFlags.Instance);
    }

    /// <summary>
    /// Represents a method that set PersianCalendar to specified instances of CultureInfo
    /// </summary>
    /// <param name="culture">Represents an instance of CultureInfo that persian number format should be set to it.</param>
    public static void SetPersianOptions(CultureInfo farsicultureinfo)
    {
    SetPersianCalendar(farsicultureinfo, new DateTimeFormatInfo());
    }

    /// <summary>
    /// Represents a method that set PersianCalendar to specified instances of CultureInfo and DateTimeFormatInfo
    /// </summary>
    /// <param name="culture">Represents an instance of CultureInfo that persian number format should be set to it.</param>
    /// <param name="dateTimeFormat">Represents an instance of DateTimeFormatInfo that persian format should be set to it.</param>
    public static void SetPersianCalendar(CultureInfo farsicultureinfo, DateTimeFormatInfo datetimeformatinfo)
    {
    if (farsicultureinfo == null || farsicultureinfo.LCID != 1065)
    return;
    PersianCalendar persiacalendar = new PersianCalendar();
    bool readOnly = (bool)cultureInfoReadOnly.GetValue(farsicultureinf o);
    if (readOnly)
    {
    cultureInfoReadOnly.SetValue(farsicultureinfo, false);
    }
    farsicultureinfo.DateTimeFormat = datetimeformatinfo;
    InitPersianDateTimeFormat(datetimeformatinfo);
    cultureInfoCalendar.SetValue(farsicultureinfo, persiacalendar);
    InitPersianNumberFormat(farsicultureinfo);
    if (readOnly)
    {
    cultureInfoReadOnly.SetValue(farsicultureinfo, true);
    }
    }

    /// <summary>
    /// Represents a method that set persian number format to specified instance CultureInfo.
    /// </summary>
    /// <param name="info">Represents an instance of CultureInfo that persian number format should be set to it.</param>
    public static void InitPersianNumberFormat(CultureInfo farsicultureinfo)
    {
    InitPersianNumberFormat(farsicultureinfo.NumberFor mat);
    }

    /// <summary>
    /// Represents a method that set persian number format to specified instance NumberFormatInfo.
    /// </summary>
    /// <param name="info">Represents an instance of NumberFormatInfo that persian option should be set to it.</param>
    public static void InitPersianNumberFormat(NumberFormatInfo farsicultureinfoNumberFormatInfo)
    {
    if (farsicultureinfoNumberFormatInfo == null)
    return;
    bool readOnly = (bool)numberFormatInfoReadOnly.GetValue(farsicultu reinfoNumberFormatInfo);
    if (readOnly)
    {
    numberFormatInfoReadOnly.SetValue(farsicultureinfo NumberFormatInfo, false);
    }
    farsicultureinfoNumberFormatInfo.NativeDigits = new string[] { "٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩" };
    farsicultureinfoNumberFormatInfo.CurrencyDecimalSe parator = "/";
    farsicultureinfoNumberFormatInfo.CurrencySymbol = "ريال";
    if (readOnly)
    {
    numberFormatInfoReadOnly.SetValue(farsicultureinfo NumberFormatInfo, true);
    }
    }

    /// <summary>
    /// Represents a method that set persian option to specified instance CultureInfo
    /// </summary>
    /// <param name="dateTimeFormat">Represents an instance of DateTimeFormatInfo that persian option should be set to it.</param>
    public static void InitPersianDateTimeFormat(DateTimeFormatInfo datetimeformatinfo)
    {
    if (datetimeformatinfo == null)
    return;
    PersianCalendar persiacalendar = new PersianCalendar();
    bool readOnly = (bool)dateTimeFormatInfoReadOnly.GetValue(datetime formatinfo);
    if (readOnly)
    {
    dateTimeFormatInfoReadOnly.SetValue(datetimeformat info, false);
    }
    dateTimeFormatInfoCalendar.SetValue(datetimeformat info, persiacalendar);
    //object obj2 = dateTimeFormatInfoCultureTableRecord.GetValue(info );
    //cultureTableRecordUseCurrentCalendar.Invoke(obj2, new object[] { calendarID.GetValue(calendar, null) });
    datetimeformatinfo.AbbreviatedDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
    datetimeformatinfo.ShortestDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
    datetimeformatinfo.DayNames = new string[] { "یکشنبه", "دوشنبه", "ﺳﻪشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" };
    datetimeformatinfo.AbbreviatedMonthNames = new string[] { "فروردین", "ارديبهشت", "خرداد", "تير", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
    datetimeformatinfo.MonthNames = new string[] { "فروردین", "ارديبهشت", "خرداد", "تير", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
    datetimeformatinfo.AMDesignator = "ق.ظ";
    datetimeformatinfo.PMDesignator = "ب.ظ";
    datetimeformatinfo.FirstDayOfWeek = DayOfWeek.Saturday;
    datetimeformatinfo.FullDateTimePattern = "yyyy, MMMM dddd, dd HH:mm:ss";
    datetimeformatinfo.LongDatePattern = "yyyy , MMMM dddd , dd";//Change This Line Causes Problems
    datetimeformatinfo.ShortDatePattern = "yyyy/MM/dd";
    if (readOnly)
    {
    dateTimeFormatInfoReadOnly.SetValue(datetimeformat info, true);
    }
    }
    }
    }


    واما خطوط دارای ارور :

    //cultureTableRecordUseCurrentCalendar = cultureTableRecord.GetMethod("UseCurrentCalendar", BindingFlags.NonPublic | BindingFlags.Instance);

    ---------------------------------------

    //object obj2 = dateTimeFormatInfoCultureTableRecord.GetValue(info );
    //cultureTableRecordUseCurrentCalendar.Invoke(obj2, new object[] { calendarID.GetValue(calendar, null) });


    چگونه این ارورها را رفع نمایم؟
    فکر می کنم این کدها در ارتباط با اسمبلی دات نت هستند که برای تحقیق درمورد آنها باید Reflector را در دات نت بررسی کرد.

    واما کدی که در page_Load استفاده می کنم به صورت زیر است :
    CultureInfo facultureinfo = new CultureInfo("fa-IR");
    PersianCultureHelper.SetPersianOptions(faculturein fo);
    Thread.CurrentThread.CurrentCulture = facultureinfo;

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

    اگر راهنمایی بفرمایید ممنون می شوم

    باتشکر
    مجید داراب
    آخرین ویرایش به وسیله majid_darab : دوشنبه 22 فروردین 1390 در 03:03 صبح

  10. #7
    کاربر دائمی آواتار monika
    تاریخ عضویت
    تیر 1388
    محل زندگی
    برنامه نویس
    سن
    29
    پست
    147
    تشکر کردن
    77
    19 بار تشکر شده در 18 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    سلام من میخوام داخل پروژه ام ویزیت آنلاین داشته باشم این کاربه تعریف تاریخ شمسی احتیاج داره؟
    من چطور باید این کاررو انجام بدم .طوری که تاریخ وساعت توپروژه ام تعریف بشه

  11. #8
    کاربر دائمی
    تاریخ عضویت
    مهر 1384
    پست
    315
    تشکر کردن
    36
    21 بار تشکر شده در 18 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    من persian culture رو نصب کردم چیکار کنم که تقویم در فرم شمسی بشه

  12. #9
    کاربر دائمی آواتار sanay_esh
    تاریخ عضویت
    تیر 1386
    محل زندگی
    برنامه نویس !
    سن
    32
    پست
    448
    تشکر کردن
    77
    311 بار تشکر شده در 195 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    با سلام خدمت همه اساتید محترم ( بخصوص استاد گرانقدر جناب کرامتی ) و دوستان عزیز

    برای استفاده از تقویم شمسی باید مراحل زیر را طی نمود:

    ابتدا یک کلاس با محتویات زیر به پروژه خود اضافه نمائید:
    public class PersianCulture : CultureInfo
    {
    private readonly Calendar cal;
    private readonly Calendar[] optionals;


    public PersianCulture()
    : this("fa-IR", true)
    {
    }

    public PersianCulture(string cultureName, bool useUserOverride)
    : base(cultureName, useUserOverride)
    {
    //Temporary Value for cal.
    cal = base.OptionalCalendars[0];

    //populating new list of optional calendars.
    var optionalCalendars = new List<Calendar>();
    optionalCalendars.AddRange(base.OptionalCalendars) ;
    optionalCalendars.Insert(0, new PersianCalendar());


    Type formatType = typeof(DateTimeFormatInfo);
    Type calendarType = typeof(Calendar);


    PropertyInfo idProperty = calendarType.GetProperty("ID", BindingFlags.Instance | BindingFlags.NonPublic);
    FieldInfo optionalCalendarfield = formatType.GetField("optionalCalendars",
    BindingFlags.Instance | BindingFlags.NonPublic);

    //populating new list of optional calendar ids
    var newOptionalCalendarIDs = new Int32[optionalCalendars.Count];
    for (int i = 0; i < newOptionalCalendarIDs.Length; i++)
    newOptionalCalendarIDs[i] = (Int32)idProperty.GetValue(optionalCalendars[i], null);

    optionalCalendarfield.SetValue(DateTimeFormat, newOptionalCalendarIDs);

    optionals = optionalCalendars.ToArray();
    cal = optionals[0];
    DateTimeFormat.Calendar = optionals[0];

    DateTimeFormat.MonthNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
    DateTimeFormat.MonthGenitiveNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
    DateTimeFormat.AbbreviatedMonthNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
    DateTimeFormat.AbbreviatedMonthGenitiveNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };


    DateTimeFormat.AbbreviatedDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
    DateTimeFormat.ShortestDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
    DateTimeFormat.DayNames = new string[] { "یکشنبه", "دوشنبه", "ﺳﻪشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" };

    DateTimeFormat.AMDesignator = "ق.ظ";
    DateTimeFormat.PMDesignator = "ب.ظ";

    /*
    DateTimeFormat.ShortDatePattern = "yyyy/MM/dd";
    DateTimeFormat.LongDatePattern = "yyyy/MM/dd";

    DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy/MM/dd"}, 'd');
    DateTimeFormat.SetAllDateTimePatterns(new[] {"dddd, dd MMMM yyyy"}, 'D');
    DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy MMMM"}, 'y');
    DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy MMMM"}, 'Y');
    */

    }

    public override Calendar Calendar
    {
    get { return cal; }
    }

    public override Calendar[] OptionalCalendars
    {
    get { return optionals; }
    }


    سپس با راست کلیک کردن روی پروژه یک فایل با نام Global.asax به پروژه اضافه نمائید

    سپس بروی فایل اضافه شده دوبار کلیک نمائید و کد زیر را در قسمت مربوطه اضافه نمائید
     protected void Application_BeginRequest(object sender, EventArgs e)
    {
    var persianCulture = new PersianCulture();
    Thread.CurrentThread.CurrentCulture = persianCulture;
    Thread.CurrentThread.CurrentUICulture = persianCulture;
    }


    در این صورت هر گونه کاری با تاریخ داشتید دات نت خودش براتون شمسی میکنه !!!

  13. 13 کاربر از sanay_esh به خاطر این مطلب مفید تشکر کرده اند:


  14. #10
    کاربر دائمی
    تاریخ عضویت
    مهر 1384
    پست
    315
    تشکر کردن
    36
    21 بار تشکر شده در 18 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    یعنی حتی اگه از month calendar موجود در vs2010 استفاده کنم شمسی میشه؟

  15. #11
    کاربر دائمی آواتار sanay_esh
    تاریخ عضویت
    تیر 1386
    محل زندگی
    برنامه نویس !
    سن
    32
    پست
    448
    تشکر کردن
    77
    311 بار تشکر شده در 195 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    عرض کردم هر گونه کاری با تاریخ داشتید دات نت براتون بصورت شمسی انجام مید ه

    تمامی امکانات کلاس Datetime بصورت شمسی در اختیار شما قرار دارد

  16. کاربرانی که به خاطر مطلب مفید sanay_esh از وی تشکر کرده‌اند:


  17. #12
    کاربر دائمی
    تاریخ عضویت
    مهر 1384
    پست
    315
    تشکر کردن
    36
    21 بار تشکر شده در 18 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    مرسی بابت جوابتون حالا من چطوری میتونم تو windows form از این کلاس استفاده کنم.
    اونجا که دیگه فایل global نداره باید چکار کنم؟

  18. #13
    کاربر دائمی آواتار TeacherMath
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    ?
    سن
    31
    پست
    758
    تشکر کردن
    295
    307 بار تشکر شده در 264 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    میتو نید توی program تابع main() بنویسید

  19. #14
    کاربر دائمی
    تاریخ عضویت
    مهر 1384
    پست
    315
    تشکر کردن
    36
    21 بار تشکر شده در 18 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    اونجا نوشتم ولی جواب نمیده
    باید چیکار کنم؟

  20. #15
    کاربر جدید
    تاریخ عضویت
    تیر 1391
    پست
    1
    تشکر کردن
    0
    0 بار تشکر شده در 0 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    منظور از قسمت مربوطه تو فایل global.asax چیه؟

  21. #16
    کاربر دائمی
    تاریخ عضویت
    اسفند 1387
    پست
    843
    تشکر کردن
    161
    133 بار تشکر شده در 104 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    نقل قول نوشته شده توسط sanay_esh مشاهده تاپیک
    عرض کردم هر گونه کاری با تاریخ داشتید دات نت براتون بصورت شمسی انجام مید ه

    تمامی امکانات کلاس Datetime بصورت شمسی در اختیار شما قرار دارد
    دوست عزیز دستتون درد نکنه . من هم خیلی وقت بود دنبال حل این مشکل بودم . اما الان یک سوال دارم اگر بخواهیم فقط کنترل calender این خصوصیت رو به خودش بگیره باید چه کدی بنویسیم ؟؟؟

  22. #17
    کاربر دائمی آواتار sanay_esh
    تاریخ عضویت
    تیر 1386
    محل زندگی
    برنامه نویس !
    سن
    32
    پست
    448
    تشکر کردن
    77
    311 بار تشکر شده در 195 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    کمی به کلاس اصلی در صفحه اول این تاپیک دقت کنی همه چیز معلومه خیلی هم سخت نیست

    به این سایت هم مراجعه کنید متوجه میشوید

  23. #18
    کاربر دائمی
    تاریخ عضویت
    اسفند 1387
    پست
    843
    تشکر کردن
    161
    133 بار تشکر شده در 104 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    نقل قول نوشته شده توسط sanay_esh مشاهده تاپیک
    کمی به کلاس اصلی در صفحه اول این تاپیک دقت کنی همه چیز معلومه خیلی هم سخت نیست

    به این سایت هم مراجعه کنید متوجه میشوید
    دوست عزیز من با تقویم آقای هاشمی نژاد کار کردم . اما در باره کلاس شما چیزی سر در نیاوردم که چطور میشه فقط روی کنترل تقویم خود asp.net تنظیم کرد . که شما هم که در پروژه قرار می دهم تمام تاریخ ها به شمسی بر می گرده که این کار برای من زیاد جالب نیست زیرا تمام کارهای تاریخ رو بر حسب میلادی انجام دادم . لطفا یک نمونه برای تنظبم روی کنترل تقویم قرار دهید . با تشکر .

  24. #19
    کاربر دائمی آواتار azygole
    تاریخ عضویت
    شهریور 1384
    پست
    133
    تشکر کردن
    15
    16 بار تشکر شده در 15 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    با سلام خدمت آقای sanay_esh
    از کدهای شما استفاده کردم خیلی خوب بود اما تقویم من فقط ماه و سالش شمسی شد و روزهاش میلادی باقی موند.باید چکار کنم؟

  25. #20
    کاربر دائمی آواتار sanay_esh
    تاریخ عضویت
    تیر 1386
    محل زندگی
    برنامه نویس !
    سن
    32
    پست
    448
    تشکر کردن
    77
    311 بار تشکر شده در 195 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    سلام

    برای استفاده از این کلاس شما باید طبق گفته بند در صفحه اول این تاپیک یک global.asax ایجاد و در قسمت Application_BeginRequest این کد را قرار بدهید :



    protected void Application_BeginRequest(object sender, EventArgs e)
    {
    var persianCulture = new PersianCulture();
    Thread.CurrentThread.CurrentCulture = persianCulture;
    Thread.CurrentThread.CurrentUICulture = persianCulture;
    }




    اما شما :
    از کدهای شما استفاده کردم خیلی خوب بود اما تقویم من فقط ماه و سالش شمسی شد و روزهاش میلادی باقی موند.باید چکار کنم؟
    کد خود را در اینجا قرار دهید یا حداقل یک پروژه کوچیک ایجاد کنید و تستی از این کلاس استفاده کنید اگر دوباره با این مشکل روبرو شدید پروژه را در اینجا قرار دهید تا بررسی کنیم

  26. کاربرانی که به خاطر مطلب مفید sanay_esh از وی تشکر کرده‌اند:


  27. #21
    کاربر دائمی آواتار azygole
    تاریخ عضویت
    شهریور 1384
    پست
    133
    تشکر کردن
    15
    16 بار تشکر شده در 15 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    با سلام و عرض پوزش از تاخیر در جواب
    من با دستورات شما کار کردم به این نتیجه رسیدم که این کدها روی تقویم کامپوننتهای تاریخ devexpress کار نمی کنه . شاید هم چون global.asax رو نتونستم راه بندازم اینطوریه . آخه وقتی فایل global رو ایجاد می کنم و کد شما رو توش کپی می کنم این خطا رو می ده :
    The name 'Thread' does not exist in the current context
    جایی هم نداره که این خط رو اضافه کنم:
    using System.Threading;
    آخه این فایل رو اضافه کردم و توی فرم اولم یعنی default.aspx کدهای global.asax که گفته بودید وارد کردم و خطا نداد اما تقویم devexpress درست نشد ولی تقویم خود دات نت درست شد.
    من منتظر کمک شما هستم . با تشکر فراوان

  28. #22
    کاربر دائمی آواتار saeed_sho
    تاریخ عضویت
    خرداد 1390
    محل زندگی
    تهران
    پست
    890
    تشکر کردن
    265
    208 بار تشکر شده در 174 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    شما اینطوری بنویسید
    System.Threading.Thread.CurrentThread.CurrentCultu  re = persianCulture;

  29. #23
    کاربر دائمی آواتار azygole
    تاریخ عضویت
    شهریور 1384
    پست
    133
    تشکر کردن
    15
    16 بار تشکر شده در 15 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    سلام.خطا رفع شد اما تقویم شمسی نشد

  30. #24
    کاربر جدید
    تاریخ عضویت
    آبان 1391
    پست
    1
    تشکر کردن
    0
    0 بار تشکر شده در 0 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    سلام
    نتونستم دانلود کنم
    خواهش می کنم برام ایمیل کنید
    froo_kia1390@yahoo.com
    متشکرم

  31. #25
    کاربر دائمی
    تاریخ عضویت
    خرداد 1382
    پست
    1,662
    تشکر کردن
    10
    155 بار تشکر شده در 95 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    ظاهراً روش قبلی بهبود پیدا کرده

    http://www.codeproject.com/articles/...n-culture-in-n

    اگر دوستان بتونن یه مثال واسه فارسی کردن monthcalendar یا datetimepicker درست کنند و اینجا بگذارند واقعا لطف میکنن

  32. #26
    کاربر جدید
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    مشهد
    پست
    25
    تشکر کردن
    27
    6 بار تشکر شده در 3 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    جناب sanay_esh با استفاده از این کلاس و توضیحاتی که دادید من تقویم رو فارسی کردم اما یک سوال دارم:
    چطور می تونم تاریخ رو در دیتابیس به صورت date ذخیره کنم ؟من کدهای زیر رو نوشتم اما هنگام ذخیره error میده :



    protected void Calendar1_SelectionChanged(object sender, EventArgs e)
    {
    PersianCalendar pc = new PersianCalendar();
    DateTime Date = Calendar1.SelectedDate;
    TextBox1.Text =pc.GetYear(Date)+"/"+pc.GetMonth(Date)+"/"+pc.GetDayOfMonth(Date);
    d1 = new DateTime(pc.GetYear(Date),pc.GetMonth(Date), pc.GetDayOfMonth(Date) ,pc);
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["calendarConnectionString1"].ConnectionString);
    SqlCommand cmd = new SqlCommand("insert into dates (date) values ('" +d1+ "')",con);
    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();

    Label1.Visible = true;
    Label1.Text = "sabt shod";
    GridView1.DataBind();

    خطایی که میده اینه:
    Specified time is not supported in this calendar. It should be between 03/21/0622 00:00:00 (Gregorian date) and 12/31/9999 23:59:59 (Gregorian date), inclusive.
    Parameter name: time
    آخرین ویرایش به وسیله fardin_esmi : یک شنبه 08 اردیبهشت 1392 در 18:37 عصر

  33. #27
    کاربر دائمی آواتار sanay_esh
    تاریخ عضویت
    تیر 1386
    محل زندگی
    برنامه نویس !
    سن
    32
    پست
    448
    تشکر کردن
    77
    311 بار تشکر شده در 195 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    با سلام خدمت شما دوست گرامی

    شما باید نوع فیلد خود را در DB از نوع DateTime یا Date در نظر بگیرید و براحتی آن را میتوانید ذخیره نمائید

    از طرفی اگر بخواهید بصورت رشته در DB ذخیره نمائید میتوانید از متد ToString() این تابع استفاده نموده و آنرا به رشته تبدیل و در بانک خود ذخیره نمائید

    همین !!

  34. #28
    کاربر جدید
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    مشهد
    پست
    25
    تشکر کردن
    27
    6 بار تشکر شده در 3 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    با سلام مجدد
    من نوع فیلد رو هم date و هم datetime تعریف کردم اما باز هم خطا میگیره .ممکنه اشکال این کدهایی که گذاشتم بفرمایید کجاست؟
    آخرین ویرایش به وسیله fardin_esmi : سه شنبه 10 اردیبهشت 1392 در 10:56 صبح

  35. #29
    کاربر جدید
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    مشهد
    پست
    25
    تشکر کردن
    27
    6 بار تشکر شده در 3 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    سلام مجدد
    مشکلم با استفاده از پارامترها حل شد.

  36. #30
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    Mashhad
    پست
    40
    تشکر کردن
    20
    2 بار تشکر شده در 2 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    سلام دوستان
    من زمان رو به شمسی تبدیل کردم حالا می خوام زمان رو از دیتابیش چک کنم خطا می گیره؟
    آیا می شه زمان رو به میلادی گرفت؟

    ممنون می شم راهنمایی کنید

  37. #31
    کاربر جدید
    تاریخ عضویت
    مهر 1388
    پست
    2
    تشکر کردن
    0
    0 بار تشکر شده در 0 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    نقل قول نوشته شده توسط sanay_esh مشاهده تاپیک
    با سلام خدمت همه اساتید محترم ( بخصوص استاد گرانقدر جناب کرامتی ) و دوستان عزیز

    برای استفاده از تقویم شمسی باید مراحل زیر را طی نمود:

    ابتدا یک کلاس با محتویات زیر به پروژه خود اضافه نمائید:
    public class PersianCulture : CultureInfo
    {
    private readonly Calendar cal;
    private readonly Calendar[] optionals;


    public PersianCulture()
    : this("fa-IR", true)
    {
    }

    public PersianCulture(string cultureName, bool useUserOverride)
    : base(cultureName, useUserOverride)
    {
    //Temporary Value for cal.
    cal = base.OptionalCalendars[0];

    //populating new list of optional calendars.
    var optionalCalendars = new List<Calendar>();
    optionalCalendars.AddRange(base.OptionalCalendars) ;
    optionalCalendars.Insert(0, new PersianCalendar());


    Type formatType = typeof(DateTimeFormatInfo);
    Type calendarType = typeof(Calendar);


    PropertyInfo idProperty = calendarType.GetProperty("ID", BindingFlags.Instance | BindingFlags.NonPublic);
    FieldInfo optionalCalendarfield = formatType.GetField("optionalCalendars",
    BindingFlags.Instance | BindingFlags.NonPublic);

    //populating new list of optional calendar ids
    var newOptionalCalendarIDs = new Int32[optionalCalendars.Count];
    for (int i = 0; i < newOptionalCalendarIDs.Length; i++)
    newOptionalCalendarIDs[i] = (Int32)idProperty.GetValue(optionalCalendars[i], null);

    optionalCalendarfield.SetValue(DateTimeFormat, newOptionalCalendarIDs);

    optionals = optionalCalendars.ToArray();
    cal = optionals[0];
    DateTimeFormat.Calendar = optionals[0];

    DateTimeFormat.MonthNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
    DateTimeFormat.MonthGenitiveNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
    DateTimeFormat.AbbreviatedMonthNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
    DateTimeFormat.AbbreviatedMonthGenitiveNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };


    DateTimeFormat.AbbreviatedDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
    DateTimeFormat.ShortestDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
    DateTimeFormat.DayNames = new string[] { "یکشنبه", "دوشنبه", "ﺳﻪشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" };

    DateTimeFormat.AMDesignator = "ق.ظ";
    DateTimeFormat.PMDesignator = "ب.ظ";

    /*
    DateTimeFormat.ShortDatePattern = "yyyy/MM/dd";
    DateTimeFormat.LongDatePattern = "yyyy/MM/dd";

    DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy/MM/dd"}, 'd');
    DateTimeFormat.SetAllDateTimePatterns(new[] {"dddd, dd MMMM yyyy"}, 'D');
    DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy MMMM"}, 'y');
    DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy MMMM"}, 'Y');
    */

    }

    public override Calendar Calendar
    {
    get { return cal; }
    }

    public override Calendar[] OptionalCalendars
    {
    get { return optionals; }
    }


    سپس با راست کلیک کردن روی پروژه یک فایل با نام Global.asax به پروژه اضافه نمائید

    سپس بروی فایل اضافه شده دوبار کلیک نمائید و کد زیر را در قسمت مربوطه اضافه نمائید
     protected void Application_BeginRequest(object sender, EventArgs e)
    {
    var persianCulture = new PersianCulture();
    Thread.CurrentThread.CurrentCulture = persianCulture;
    Thread.CurrentThread.CurrentUICulture = persianCulture;
    }


    در این صورت هر گونه کاری با تاریخ داشتید دات نت خودش براتون شمسی میکنه !!!
    .................................................. ........................

    با سلام خدمت شما و اساتید گرامی
    باید بگم بسیار روش جالب و خلاقانه ای بودبود..
    اما فقط میشه از این روش برای Calender مربوط به asp.net استفاده کرد..که متاسفانه DatePicker ندارد..و وقتی از کامپوننتهایی مثل Telerik استفاده میکنیم به مشکل بر میخوریم با این که در ابتدا همه چیز فارسی است ولی وقتی تاریخی select میشود روز آن شمسی ولی ماه و سال آن میلادی نوشته میشود..
    آیا راهی برای این مسئله وجود دارد؟
    ممنون.

  38. #32
    کاربر تازه وارد آواتار alale66
    تاریخ عضویت
    دی 1389
    محل زندگی
    تهران
    پست
    39
    تشکر کردن
    9
    2 بار تشکر شده در 2 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    با سلام
    من میخوام از DateTimePicker فارسی تو پروژه WindowsApplication استفاده کنم.کلاس رو به پروژم اضافه کردم کد

    var persianCulture = new PersianCulture();
    Thread.CurrentThread.CurrentCulture = persianCulture;
    Thread.CurrentThread.CurrentUICulture = persianCulture;

    رو هم به Main اضافه کردم ولی اتفاقی نیافتاد.
    راهی هست بشه DateTinmePichker رو شمسیش کرد؟میشه راهنماییم کنید لطفا
    ممنون
    آخرین ویرایش به وسیله alale66 : دوشنبه 28 مرداد 1392 در 10:22 صبح

  39. #33
    کاربر جدید
    تاریخ عضویت
    بهمن 1385
    پست
    20
    تشکر کردن
    0
    9 بار تشکر شده در 3 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    سلام
    من بشدت نیاز مند
    DateTimePicker
    و
    month calendar
    با تاریخ شمی هستم.
    مثلا میشه
    http://www.daypilot.org/demo/Month/
    رو شمسی کرد؟

  40. #34
    کاربر دائمی آواتار majid_i68
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    گچساران
    سن
    28
    پست
    264
    تشکر کردن
    110
    62 بار تشکر شده در 54 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    نقل قول نوشته شده توسط sanay_esh مشاهده تاپیک
    با سلام خدمت همه اساتید محترم ( بخصوص استاد گرانقدر جناب کرامتی ) و دوستان عزیز

    برای استفاده از تقویم شمسی باید مراحل زیر را طی نمود:

    ابتدا یک کلاس با محتویات زیر به پروژه خود اضافه نمائید:
    public class PersianCulture : CultureInfo
    {
    private readonly Calendar cal;
    private readonly Calendar[] optionals;


    public PersianCulture()
    : this("fa-IR", true)
    {
    }

    public PersianCulture(string cultureName, bool useUserOverride)
    : base(cultureName, useUserOverride)
    {
    //Temporary Value for cal.
    cal = base.OptionalCalendars[0];

    //populating new list of optional calendars.
    var optionalCalendars = new List<Calendar>();
    optionalCalendars.AddRange(base.OptionalCalendars) ;
    optionalCalendars.Insert(0, new PersianCalendar());


    Type formatType = typeof(DateTimeFormatInfo);
    Type calendarType = typeof(Calendar);


    PropertyInfo idProperty = calendarType.GetProperty("ID", BindingFlags.Instance | BindingFlags.NonPublic);
    FieldInfo optionalCalendarfield = formatType.GetField("optionalCalendars",
    BindingFlags.Instance | BindingFlags.NonPublic);

    //populating new list of optional calendar ids
    var newOptionalCalendarIDs = new Int32[optionalCalendars.Count];
    for (int i = 0; i < newOptionalCalendarIDs.Length; i++)
    newOptionalCalendarIDs[i] = (Int32)idProperty.GetValue(optionalCalendars[i], null);

    optionalCalendarfield.SetValue(DateTimeFormat, newOptionalCalendarIDs);

    optionals = optionalCalendars.ToArray();
    cal = optionals[0];
    DateTimeFormat.Calendar = optionals[0];

    DateTimeFormat.MonthNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
    DateTimeFormat.MonthGenitiveNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
    DateTimeFormat.AbbreviatedMonthNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
    DateTimeFormat.AbbreviatedMonthGenitiveNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };


    DateTimeFormat.AbbreviatedDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
    DateTimeFormat.ShortestDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
    DateTimeFormat.DayNames = new string[] { "یکشنبه", "دوشنبه", "ﺳﻪشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" };

    DateTimeFormat.AMDesignator = "ق.ظ";
    DateTimeFormat.PMDesignator = "ب.ظ";

    /*
    DateTimeFormat.ShortDatePattern = "yyyy/MM/dd";
    DateTimeFormat.LongDatePattern = "yyyy/MM/dd";

    DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy/MM/dd"}, 'd');
    DateTimeFormat.SetAllDateTimePatterns(new[] {"dddd, dd MMMM yyyy"}, 'D');
    DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy MMMM"}, 'y');
    DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy MMMM"}, 'Y');
    */

    }

    public override Calendar Calendar
    {
    get { return cal; }
    }

    public override Calendar[] OptionalCalendars
    {
    get { return optionals; }
    }


    سپس با راست کلیک کردن روی پروژه یک فایل با نام Global.asax به پروژه اضافه نمائید

    سپس بروی فایل اضافه شده دوبار کلیک نمائید و کد زیر را در قسمت مربوطه اضافه نمائید
     protected void Application_BeginRequest(object sender, EventArgs e)
    {
    var persianCulture = new PersianCulture();
    Thread.CurrentThread.CurrentCulture = persianCulture;
    Thread.CurrentThread.CurrentUICulture = persianCulture;
    }


    در این صورت هر گونه کاری با تاریخ داشتید دات نت خودش براتون شمسی میکنه !!!


    کسی هست که از این کد استفاده کرده باشه ..من میخوام در برنامه ویندوز فرم monthCalendar رو فارسی کنم.. کلاس رو ساختم اما نمیدونم Application_BeginRequest رو باید چطور در تایع main قرار بدم

  41. #35
    کاربر دائمی
    تاریخ عضویت
    مهر 1386
    پست
    148
    تشکر کردن
    49
    27 بار تشکر شده در 16 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    نقل قول نوشته شده توسط majid_i68 مشاهده تاپیک
    کسی هست که از این کد استفاده کرده باشه ..من میخوام در برنامه ویندوز فرم monthCalendar رو فارسی کنم.. کلاس رو ساختم اما نمیدونم Application_BeginRequest رو باید چطور در تایع main قرار بدم
    باید داخل program بنویسید

  42. #36
    کاربر دائمی آواتار mdssoft
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    تهران / ساری
    پست
    391
    تشکر کردن
    347
    666 بار تشکر شده در 81 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    شما می تونید از کتابخانه زیر استفاده کنید، تمامی کارهای مورد نظر شما رو انجام میده

    http://www.codeproject.com/Articles/...Time-in-Csharp

  43. #37
    کاربر جدید
    تاریخ عضویت
    دی 1393
    پست
    2
    تشکر کردن
    0
    0 بار تشکر شده در 0 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    سلام بی زجمت بگین چطور میشه تو برنامم یه تقویم فارسی مثل کامپننت DateTimePicker1 درvb.net2010 داشته باشم بی زخمت اگه هست خیلی ساده توضیح بدین چطور استفاده کنم من زیاد بلد نیستم ممنون

  44. #38
    کاربر دائمی آواتار mdssoft
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    تهران / ساری
    پست
    391
    تشکر کردن
    347
    666 بار تشکر شده در 81 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    اگر وب منظورتون هست که می تونید از DateTimePicker هایی مثل Bootstrap Persian DateTimePicker استفاده کنید اما در مورد ویندوزی می تونید سرچ کنید من ویندوزی کار نمی کنم

  45. #39
    کاربر دائمی آواتار aliasghar2
    تاریخ عضویت
    مهر 1389
    پست
    507
    تشکر کردن
    125
    229 بار تشکر شده در 200 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    من خودم شخصا از اینکامپوننت استفاده میکنم با جاوا اسکریپ نوشه شده و خیلی هم زیباس نیاز به dll و یا jquery هم نداره
    http://amib.ir/weblog/?page_id=316

  46. #40
    کاربر دائمی آواتار mdssoft
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    تهران / ساری
    پست
    391
    تشکر کردن
    347
    666 بار تشکر شده در 81 پست

    نقل قول: تقویم شمسی (Persian Calendar) در ویژوال استودیو 2010 (vs 2010 = visual studio 2010)

    نقل قول نوشته شده توسط aliasghar2 مشاهده تاپیک
    من خودم شخصا از اینکامپوننت استفاده میکنم با جاوا اسکریپ نوشه شده و خیلی هم زیباس نیاز به dll و یا jquery هم نداره
    http://amib.ir/weblog/?page_id=316
    DatePicker خیلی زیبایی بود
    اما jquery plugin بودن و استفاده از bootstrap در بعضی از موارد مزیت حساب میشن
    1- استفاده از bootstrap یعنی اینکه این تقویم responsive هست
    2- با استفاده از jQuery میتوان به آبجکت های تقویم دسترسی پیدا کردم و پارامترهای اون رو تغییر داد
    3- به علت استفاده از bootstrap تم تقویم کاملا به تم bootstrap وابسته هست و با عوض شدن تم bootstrap تم تقویم هم عوض میشود
    4- Open Source هست و سورس آن minify نشده و کاملا قابل ویرایش است
    5- می توان بدون نوشتن کد جاوا اسکریپت و تنها با Attribute های html تقویم رو فعال و یا غیر فعال کرد

صفحه 1 از 2 12 آخرآخر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •