PDA

View Full Version : استفاده از کلاس تبدیل تاریخ



komeil64
یک شنبه 19 اردیبهشت 1389, 19:34 عصر
سلام
این کلاس رو آقای کرامتی به من معرفی کردن:


using System;
using System.Collections.Generic;
using System.Text;

namespace PersianUtils
{
public class CalendarUtils
{
public static void SetCalendar()
{
System.Globalization.CultureInfo calture = new System.Globalization.CultureInfo("fa-IR");
System.Globalization.DateTimeFormatInfo info = calture.DateTimeFormat;

info.AbbreviatedDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
info.ShortestDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
info.DayNames = new string[] { "یکشنبه", "دوشنبه", "ﺳﻪشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" };
info.AbbreviatedMonthNames = new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
info.MonthNames = new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
info.AMDesignator = "ق.ظ";
info.PMDesignator = "ب.ظ";
info.ShortDatePattern = "yyyy/MM/dd";
info.LongDatePattern = "yyyy/MM/dd";
info.FirstDayOfWeek = DayOfWeek.Saturday;
System.Globalization.PersianCalendar cal = new System.Globalization.PersianCalendar();
typeof(System.Globalization.DateTimeFormatInfo).Ge tField("calendar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue (info, cal);
object obj = typeof(System.Globalization.DateTimeFormatInfo).Ge tField("m_cultureTableRecord", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue (info);
obj.GetType().GetMethod("UseCurrentCalendar", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).Invoke(ob j, new object[] { cal.GetType().GetProperty("ID", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue (cal, null) });
typeof(System.Globalization.CultureInfo).GetField("calendar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue (calture, cal);
System.Threading.Thread.CurrentThread.CurrentCultu re = calture;
System.Threading.Thread.CurrentThread.CurrentUICul ture = calture;
System.Globalization.CultureInfo.CurrentCulture.Da teTimeFormat = info;
System.Globalization.CultureInfo.CurrentUICulture. DateTimeFormat = info;
}
}
}



ایشون یه کار می کردن که بصورت اتومات همه تاریخ ها بوسیله این کلاس تبدیل می شد
ممنون میشم راهنمایی کنید چطور این کار رو انجام بدم
تشکر

komeil64
دوشنبه 20 اردیبهشت 1389, 14:47 عصر
کاری که ایشون می کردن این بود که تاریخ توی دیتا بیس میلادی ثبت می شود اما توسط این کلاس توی پروژه شمسی نشون داده میشه
کسی می تونه راهنمایی کنه چطوری این کلاس رو بکار بگیرم ؟!

Peyman.Gh
جمعه 24 اردیبهشت 1389, 11:55 صبح
این کدی که نوشتم را ببینید در اینجا رشته را به DateTime تبدیل کردیم.
با استفاده از System.Globalization.PersianCalendar تاریخ میلادی را به تاریخ شمسی تبدیل میکنیم.

string date = "2010/05/14";
DateTime dt = DateTime.Parse(date);
System.Globalization.PersianCalendar p = new System.Globalization.PersianCalendar();
string year = p.GetYear(dt).ToString();
string month = p.GetMonth(dt).ToString();
string day = p.GetDayOfMonth(dt).ToString();
Response.Write(year + "/" + month + "/" + day);

موفق باشید.

hp1361
سه شنبه 02 آذر 1389, 01:34 صبح
سلام
این کلاس رو آقای کرامتی به من معرفی کردن:


using System;
using System.Collections.Generic;
using System.Text;

namespace PersianUtils
{
public class CalendarUtils
{
public static void SetCalendar()
{
System.Globalization.CultureInfo calture = new System.Globalization.CultureInfo("fa-IR");
System.Globalization.DateTimeFormatInfo info = calture.DateTimeFormat;

info.AbbreviatedDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
info.ShortestDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
info.DayNames = new string[] { "یکشنبه", "دوشنبه", "ﺳﻪشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" };
info.AbbreviatedMonthNames = new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
info.MonthNames = new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
info.AMDesignator = "ق.ظ";
info.PMDesignator = "ب.ظ";
info.ShortDatePattern = "yyyy/MM/dd";
info.LongDatePattern = "yyyy/MM/dd";
info.FirstDayOfWeek = DayOfWeek.Saturday;
System.Globalization.PersianCalendar cal = new System.Globalization.PersianCalendar();
typeof(System.Globalization.DateTimeFormatInfo).Ge tField("calendar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue (info, cal);
object obj = typeof(System.Globalization.DateTimeFormatInfo).Ge tField("m_cultureTableRecord", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue (info);
obj.GetType().GetMethod("UseCurrentCalendar", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).Invoke(ob j, new object[] { cal.GetType().GetProperty("ID", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue (cal, null) });
typeof(System.Globalization.CultureInfo).GetField("calendar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue (calture, cal);
System.Threading.Thread.CurrentThread.CurrentCultu re = calture;
System.Threading.Thread.CurrentThread.CurrentUICul ture = calture;
System.Globalization.CultureInfo.CurrentCulture.Da teTimeFormat = info;
System.Globalization.CultureInfo.CurrentUICulture. DateTimeFormat = info;
}
}
}



ایشون یه کار می کردن که بصورت اتومات همه تاریخ ها بوسیله این کلاس تبدیل می شد
ممنون میشم راهنمایی کنید چطور این کار رو انجام بدم
تشکر

گویا برای دات نت 4 ارور میده.کسی میدونه چطور باید اروره Instance اونو رفع کرد؟


object obj = typeof(System.Globalization.DateTimeFormatInfo).Ge tField("m_cultureTableRecord", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue (info);

ASPX
شنبه 03 اردیبهشت 1390, 11:51 صبح
کسی راهی پیدا نکرده منم این مشکل رو دارم!

karim orooji
شنبه 03 اردیبهشت 1390, 12:28 عصر
سلام اینو استفاده کن


Public Class ravadid
Public Shared Function setdaytext(ByVal day As String) As String
Select Case day
Case "Saturday"
Return "شنبه"
Case "Sunday"
Return "یک شنبه"
Case "Monday"
Return "دوشنبه"
Case "Tuesday"
Return "سه شنبه"
Case "Wednesday"
Return "چهار شنبه"
Case "Thursday"
Return "پنج شنبه"
Case "Friday"
Return "جمعه"
End Select
Return ""
End Function
Public Shared Function setmonthtext(ByVal month As String) As String
Select Case month
Case "1"
Return "فروردین"
Case "2"
Return "اردیبهشت"
Case "3"
Return "خرداد"
Case "4"
Return "تیر"
Case "5"
Return "مرداد"
Case "6"
Return "شهریور"
Case "7"
Return "مهر"
Case "8"
Return "آبان"
Case "9"
Return "آذر"
Case "10"
Return "دی"
Case "11"
Return "بهمن"
Case "12"
Return "اسفند"
End Select
Return ""
End Function
End Class



و برای ریختن در کنترول


Sub data()
Dim pc As New PersianCalendar()
Dim sal As String = pc.GetYear(Date.Now).ToString()
Dim mah As String = pc.GetMonth(Date.Now).ToString()
Dim day As String = pc.GetDayOfMonth(Date.Now).ToString()
Dim dayy As String = setdaytext(pc.GetDayOfWeek(Date.Now).ToString())
Dim month As String = setmonthtext(pc.GetMonth(Date.Now).ToString())
Label1.Text = " امروز : " + dayy + " " + day & " " & month & " " & sal & " ساعت" & pc.GetHour(Date.Now).ToString() & ":" & pc.GetMinute(Date.Now).ToString()
End Sub

alonemm
شنبه 03 اردیبهشت 1390, 14:27 عصر
باسلام:
اگه شما تاریخ رو به صورت میلادی ذخیره میکنید و برای نمایش مثل در گرید مشکل دارید میتونید در روییداد OnRowDataBound عملیات تبدیل داده رو انجام بدید. ( این سوال رو چند بار پاسخ دادم جستجو کنید )