نمایش تاریخ و ساعت فارسی در MVC 5
0 0

نمایش تاریخ و ساعت فارسی در MVC 5


نمایش تاریخ و ساعت فارسی در MVC 5

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

در اینجا یک روش بسیار مناسب و حرفه ای جهت نمایش تاریخ فارسی در MVC 5 را آموزش می دهیم. با استفاده از این روش دیگر شما نیاز به استفاده از dll ها یا روش های دیگر که نیاز به کد نویسی در قسمت های مختلف برنامه دارد را ندارید.

در اینجا شما تاریخ را به صورتی میلادی ثبت می کنید ولی کدهای که ما به برنامه اضافه می کنیم در کل برنامه به صورت فارسی نمایش می دهد.

برای این کار ابتدا یک کلاس به نام PersianCulture ایجاد کنید و کدهای زیر را به آن اضافه کنید.

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

namespace DisplayPersianDateInMVC5.Infrastructure
{
   
    public class PersianCulture : CultureInfo
    {
        private readonly Calendar cal;
        private readonly Calendar[] optionals;

        /// <summary>
        /// </summary>
        /// <param name="cultureName">fa-IR</param>
        /// <param name="useUserOverride">true</param>
        
        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 بروید و کد زیر را به آن اضافه کنید.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using DisplayPersianDateInMVC5.Infrastructure;
using System.Threading;



namespace DisplayPersianDateInMVC5
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_BeginRequest(object sender, EventArgs e)
        {
            var persianCulture = new PersianCulture();
            persianCulture.DateTimeFormat.ShortDatePattern = "yyyy/MM/dd";
            persianCulture.DateTimeFormat.LongDatePattern = "dddd d MMMM yyyy";
            persianCulture.DateTimeFormat.AMDesignator = "صبح";
            persianCulture.DateTimeFormat.PMDesignator = "عصر";
            Thread.CurrentThread.CurrentCulture = persianCulture;
            Thread.CurrentThread.CurrentUICulture = persianCulture;
        }
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }
    }
}

حال اگر هر جای برنامه شما تاریخ به صورتی میلادی باشد هنگام نمایش به صورتی هجری شمسی نمایش داده خواهد شد.

نکته:

از این روش در Asp.Net نیز می توانید استفاده کنید.

در پست های بعدی  با استفاده از این روش نحوه استفاده  از DateTimePicker در MVC 5 را آموزش خواهیم داد.

دانلود

نویسنده حسین فتحی
گروه مطلب MVC
نوع مطلب سورس کد و آموزش
تاریخ انتشار ۱۳ اسفند ۱۳۹۳
منبع ایران گنج
تعداد نظرات ۸
قیمت کاربران VIP
توضیح توجه:
  • زمانی که روی لینک دانلود کلیک می کنید لینک دانلود به مدت 24 ساعت معتبر خواهد بود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.
خرید VIP
امکان خرید از درگاه های بانکی و حساب مجازی

برای دانلود بعد از خرید به همین صفحه برگردید تا لینک های دانلود نمایش داده شود

نظر / سوال

Captcha
نظرات کاربران

  • arman

    دلیل نمایش تاریخ میلادی صفت [DataType(DataType.Date)] هست اگر این رو روی پراپرتی بگذارید دیگه فارسی نمایش داده نمیشود

    پاسخ
  • arman

    "در پست های بعدی با استفاده از این روش نحوه استفاده از DateTimePicker در MVC 5 را آموزش خواهیم داد." سلام . من این مطلب رو پیدا نمیکنم ! من از datepicker استفاده میکنم اما تاریخ رو میلادی نشون میده

    پاسخ
    • مدیر

      سلام

      در زیر تمام مطالب لینک مطالب مرتبط قرار داده شده. نمایش Datepicker

      پاسخ
  • علي

    سلام از آموزش بسيار خوبتون ممنونم. من از کد هاي شما در devexpress mvc استفاده کردم ولي خود تاريخ رو نتونست به شمسي تبديل کنه فقط نام هفته هارو تونست و تاريخ جاري هم ميلادي نشون ميده و وقتي انتخاب ميکنم توي تکست باکس ميلادي مياره

    پاسخ
    • مدیر

      سلام

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

      پاسخ
  • آرمان

    کاملا حق با شماست درست کار می کند

    پاسخ
  • آرمان

    سلام

    نتیجه ای که به من میده: شنبه 24 دی 2015 !

    پاسخ
    • مدیر

      سلام

      نباید 2015 نمایش بده. با سورسی که قرار دادیم چک کنید جای روی اشتباه ننوشته باشین

      پاسخ