PDA

View Full Version : مشکل در تبدیل تاریخ با کامپوننت



vapa_71
دوشنبه 02 دی 1392, 16:41 عصر
سلام من از یه کامپوننت برای تقویم شمسی استفاده میکنم
یک کد دارم به شکل زیر مشکلش اینه که تاریخ رو به این صورت ذخیره میکنه 1392/10/2
ولی من میخوام به این صورت ذخیره بشه 1392/10/02
یعنی 10 کاراکتر بشه
اینم کد

textBox1.Text = dateTimePickerX1.GetSelectedDateInPersianDateTime( ).ToShortDateString();

maythamahmadi
دوشنبه 02 دی 1392, 16:45 عصر
به صورت ToLongDateString ذخیره کن ببین درست میشه؟؟

vapa_71
دوشنبه 02 دی 1392, 16:47 عصر
اونو هم تست کردم نشد

maythamahmadi
دوشنبه 02 دی 1392, 16:49 عصر
از تابع Persian Calendar هم میتونی برای دریافت تاریخ شمسی استفاده کنی.اونو هم امتحان کن شاید بدردت بخوره

vapa_71
دوشنبه 02 دی 1392, 16:51 عصر
الان در حال حاضر راهی نیست این مشکل رو حل کنم؟ عجله دارم

vapa_71
دوشنبه 02 دی 1392, 16:52 عصر
از این روش بلدم اما میخوام کاربر تاریخ رو از روی تقویم وارد کنه

System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
string Date = pc.GetYear(DateTime.Now).ToString("0000") + "/" + pc.GetMonth(DateTime.Now).ToString("00") + "/" + pc.GetDayOfMonth(DateTime.Now).ToString("00");

vapa_71
دوشنبه 02 دی 1392, 18:08 عصر
با این روش درست میشه
اما نمیدونم بعدا دچار مشکل نمیشه ؟
دوستان کسی میدونه که این کد اشکالی پیش نمیاره ؟

textBox2.Text = dateTimePickerX2.GetSelectedDateInPersianDateTime( ).ToStringFormat("yyyy/MM/dd");

fmehrvarzi
دوشنبه 02 دی 1392, 19:24 عصر
من از این کدها استفاده میکنم اینها رو خودم نوشتم:
/// <summary>
/// revised date string like this 1392/1/3 to this -->1392/01/03
/// </summary>
/// <param name="strDate"></param>
/// <returns></returns>
public static string RevisedDate(string strDate)
{
string st = "";
string[] array = strDate.Split('/');
for (int i = 1; i < 3; i++)
{
if (array[i].Length == 1)
array[i] = "0" + array[i];
}
for (int i = 0; i < 3; i++)
{
st += array[i] + (i != 2 ? "/" : "");
}
return st;
}

rezasunpc
چهارشنبه 11 دی 1392, 00:06 صبح
سلام
من از کامپوننت TxtProNet استفاده ميکنم که ميتوني توي پراپرتيش تنظيم کني که فقط تاريخ شمسي رو بگيره که به صورت 1392/10/02 ذخيره ميکنه.

hamid_0341
چهارشنبه 11 دی 1392, 07:14 صبح
از این کد استفاده کن بزارش قبل از هر جایی میخوای میلادی رو به شمسی تبدیل کنی!!!
System.Globalization.CultureInfo calture = new System.Globalization.CultureInfo("fa-IR");
System.Globalization.DateTimeFormatInfo info = calture.DateTimeFormat;
info.AbbreviatedDayNames = new string[] { "یکشنبه", "دوشنبه", "ﺳﻪشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" };
info.DayNames = new string[] { "یکشنبه", "دوشنبه", "ﺳﻪشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" };
info.AbbreviatedMonthNames = new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
info.MonthNames = new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
info.AMDesignator = "ق.ظ";
info.PMDesignator = "ب.ظ";
info.ShortDatePattern = "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);
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;