majid_darab
دوشنبه 02 آبان 1390, 13:49 عصر
با سلام و عرض خسته نباشید :
تاپیک های متعددی در سایت برنامه نویس وجود دارند که در رابطه با تبدیل تاریخ میلادی به شمسی و بالعکس می باشد.
اما یا تاریخ آنها خیلی قدیمی ست یا نکاتی ظریف در آنها لحاظ نشده است.
به طور مثال مشکلاتی از قبیل سال کبیسه و تبدیل رشته به رشته مقابل بدون در نظر گرفتن ساعت و دقیقه و ثانیه و tt و ...
از مدیران محترم خواهشمندم چهار متد نهایی در این زمینه را در این تاپیک معرفی نمایند :(زبان c#)
دو متد برای تبدیل تاریخ میلادی به شمسی که یکی رشته به عنوان ورودی بگیره و دیگری تاریخ
دو متد هم برای تبدیل تاریخ شمسی به میلادی که یکی رشته به عنوان ورودی بگیره و دیگری تاریخ
با تشکر از حسن توجه شما
alibabaei2
دوشنبه 02 آبان 1390, 19:57 عصر
سلام
مشکل تبدیل تاریخ ها با persianCalender به کلی حل شده
فقط کافیه از آدرس زیر برنامه رو بگیرید و بعد از نصب اون در فایل global.asax کد های زیر را بگذارید
http://persianculture.codeplex.com/
protected void Application_BeginRequest(object sender, EventArgs e)
{
CultureInfo culture_info = new CultureInfo("fa-IR");
// to make following line working, please install the Persian Culture Package (http://persianculture.codeplex.com)
culture_info.DateTimeFormat.Calendar = new PersianCalendar();
culture_info.DateTimeFormat.AbbreviatedDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
culture_info.DateTimeFormat.ShortestDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
culture_info.DateTimeFormat.DayNames = new string[] { "یکشنبه", "دوشنبه", "ﺳﻪشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" };
culture_info.DateTimeFormat.AbbreviatedMonthNames = new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
culture_info.DateTimeFormat.MonthNames = new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
culture_info.DateTimeFormat.AbbreviatedMonthGeniti veNames = new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
culture_info.DateTimeFormat.FirstDayOfWeek = DayOfWeek.Saturday;
culture_info.DateTimeFormat.AMDesignator = "ق.ظ";
culture_info.DateTimeFormat.PMDesignator = "ب.ظ";
culture_info.DateTimeFormat.ShortDatePattern = "yyyy/MM/dd";
culture_info.DateTimeFormat.LongDatePattern = "yyyy/MM/dd";
Thread.CurrentThread.CurrentCulture = culture_info;
Thread.CurrentThread.CurrentUICulture = culture_info;
}
majid_darab
دوشنبه 02 آبان 1390, 20:47 عصر
سلام :
من دقیقاً از روش بالا برای تغییر فرهنگ و زبان استفاده می کنم
اجازه بدید مشکلی که برام پیش آمده بود رو کامل براتون توضیح بدم.
من در پروژه خود دو قسمت برای دو زبان متفاوت (فارسی و انگلیسی) دارم که در قسمت فارسی کلاس بالا فراخوانی می گردد و در قسمت انگلیسی خیر.
حالا فرض کنید که دو تا رشته دارم که یکی تاریخ میلادیه و دیگری تاریخ شمسی!
حال گاهی برام اتفاق افتاده که بخوام در هر کدام از دو قسمت بیان شده (فارسی و انگلیسی) دو تاریخ مزبورو تبدیل کنم.
مشکل اینجا بود که در محیط انگلیسی (کلاس persian فراخوانی نشده است) متدهایی که داشتم نمی توانستند رشته ی تاریخ شمسی رو به میلادی تبدیل کنند
میشه با مثال به شفاف سازی موضوع بپردازیم :
sring ShamsiDate = "1390/05/25 4:51:33 ب.ظ"
sring MiladiDate= "2011/11/24 4:51:33 ب.ظ"
لطفاً در هر کدام دو قسمت فارسی و انگلیسی دو رشته بالا رو به معادل خود (شمسی به میلادی و میلادی به شمسی) تبدیل نمایید!
با تشکر از توجه شما
Saman Hashemi
سه شنبه 03 آبان 1390, 08:00 صبح
سلام
مشکل تبدیل تاریخ ها با persianCalender به کلی حل شده
فقط کافیه از آدرس زیر برنامه رو بگیرید و بعد از نصب اون در فایل global.asax کد های زیر را بگذارید
مگه توی System.Globalization.PersianCalendar وجود نداره که باید دانلود کنه...!
برای تبدیل تاریخ و نمایش آن از کامپوننت Persia.NET هم میتونی استفاده کنی...!
majid_darab
سه شنبه 03 آبان 1390, 09:36 صبح
سلام :
کامپوننت Persia.Net هم تست کردم
این کامپوننت برای تبدیل تاریخ شمسی به میلادی از شما جز جز تاریخ رو می خواد و یا تاریخ شمسی رو باید به صورت solarDate بهش داد تا بتونه اونو به میلادی تبدیل کنه و در حالتی که فرهنگ فارسی ست کار نمی کند!(عین توابعی که قبلاً استفاده می کردم و گفتم در مد فارسی کار نمی کنند) در ضمن وقتی می خوای رشته ی ورودی که خوش شمسی ست رو به solarDate یا تاریخ شمسی تبدیل کنی می ریزه به هم
همچنین برای تبدیل تاریخ میلادی به شمسی در نهایت solarDate برمی گردونه که برای بدست آوردن تاریخ از اون ابتدا باید اونو تبدیل به رشته کرد (من نتونستم راهی پیدا کنم که رشته ی نهایی اون Long Date باشه و زمان هم داشته باشه)
درعین حال در حالتی که فرهنگ انگلیسی ست باز هم تبدیل بالا کار نمی کند
این کار نکردن تبدیل ها واقعاً در این دو فرهنگ داستانی شده ...
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.