سلام بر اساتید محترم
کد زیرو برای استفاده از تاریخ شمسی استفاده کردم ولی نتیجه بصورت یه عدم اعشاری نشون میده 99.00051661.2631
public static class Utility { public static string ToPersianDate( this DateTime t) { System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar(); return string.Format("{0}/{1}/{2}", pc.GetYear(t).ToString(), pc.GetMonth(t).ToString(), pc.GetDayOfMonth(t).ToString()); } }
فراخوانی هم بصورت زیر در صفحه :
$("#datein").click(function () { alert(@DateTime.Now.ToPersianDate()); PersianDatePicker.Show(this, @DateTime.Now.ToPersianDate()); });
چکار باید بکنم تا تاریخو درست نشون بده تو فرمت معمول؟
( تو برنامه ویندوزی اوکیه ولی تو وب نه)
کلاس زیر را در پروزه ایجاد کنید
using System; using System.Collections.Generic; using System.Globalization; using System.Reflection; namespace GSD.Globalization { 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> /// <remarks>لطفا در هنگام استفاده به سايت سايان اشاره كنيد.</remarks> 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.ascx اضافه کنید
protected void Application_BeginRequest(object sender, EventArgs e) { var persianCulture = new PersianCulture(); Thread.CurrentThread.CurrentCulture = persianCulture; Thread.CurrentThread.CurrentUICulture = persianCulture; }
سلام
از قسمت دوم که تو global کپی کردم خطا میگیره!!!
خطای زیر:
The Name 'Tread' does not exist in the current context
System.Threading.
رو اضافه کردم اوکی شد
سلام
همه مراحل بالارو مو به مو انجام دادم ولی اجرا نمیشه
alert(DateTime.Now.ToString());
تاریخ را از سمت کنترلر به ویو ارسال کنید
این دستورو تو webform نوشتم کار کرد ولی وقتی میارم MVC عمل نمیکنه!!!
مشکل از کجاست؟
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ChakavackStaff.WebForm1" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <h1><%= DateTime.Now.ToString() %></h1> </div> </form> </body> </html>
مرسی از راهنماییتون
مشکلمو حل کردم
تاریخ رو تو کنترلر به یه session پاس دادم و ازش استفاده کردم بصورت زیر:
System.Web.HttpContext.Current.Session["DateDarkhast"] = DateTime.Now.ToString("yyy/MM/dd");
فرمن yyyy/MM/dd هم دادم که قالب رو بصورت 1395/07/02 نشون بده
بعد تو ویو بصورت زیر استفاده کردم ازش:
$(document).ready(function () { //نمایش تاریخ فارسی //PrsTaeidKonandeh Taeidkonandeh var today = '@Session["DateDarkhast"]'; $("#datein").click(function () { PersianDatePicker.Show(this, today); }); });
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)