PDA

View Full Version : استفاده از كلاس persiacalender



amirreyhaneh
سه شنبه 20 دی 1390, 08:45 صبح
با سلام

اگر بخواه تاريخ ميلادي رو به شمسي تبديل كنم وبه صورت مثلا "سه شنبه 90/10/20" نمايش دهم به چه صورت بايد استفاده كنم؟
.تو اینترنت نوشته بود باید از پارامتر w در tostring استفاده کنید به صورت زیر
("string str = solarDate.ToString("w
حالا در asp.net 2010 دو تا مشکل دارم:
1-نوع داده SolarDate ندارد؟
2-to string پارامتر نمی گیرد؟
ممنون میشم اگه راهنمایی کنید.

mahmood_4246
سه شنبه 20 دی 1390, 10:12 صبح
خودت بنویس .. یه شی از نونه از کلاس

PersiaCalender persDate=new PersiaCalender();
تاریخ رو بهش بده و یه تابع هم باید بنویسی که شماره روز رو بهش بدی و بهت فارسی برگردونه

String persia=persDate.GetYear(DateTime.Now)+"/"+persDate.GetMound(DateTime.Now)+"/"+persDate.GetDay(DateTime.Now)+" "+farsiDay()

این هم تابع تبدیل روز


public string farsDay()
{
DayOfWeek ss = DateTime.Now.DayOfWeek;
switch (ss)
{
case DayOfWeek.Saturday: return "شنبه";
.
.
.
}

}

amirreyhaneh
سه شنبه 20 دی 1390, 11:38 صبح
با سلام
ممنون از راهنمايي شما
مشكلم با راه حل شما حل شد.
البته اگر مي توانستيم به نحوي به تابع to string ژارامتر بدهيم امكانات بيشتري در اختيار داشتم.
آدرس صفحه اي هم كه درباره tostring گفته بود در زير آوردم:
http://persiadevelopers.com/articles/Persia.NET.aspx

mahmood_4246
سه شنبه 20 دی 1390, 11:53 صبح
برای این کار از Extension Method باید استفاده کنید .

amirreyhaneh
سه شنبه 20 دی 1390, 12:02 عصر
برای این کار از Extension Method باید استفاده کنید .

امكانش هست يك توضيح يا مثال كوچيك بنويسيد.
ممنون

mahmood_4246
سه شنبه 20 دی 1390, 12:40 عصر
از این Extension Methodزمانی استقفاده میشه که بخوایی به یه نوع Type مثل DateTime یه تابع اضافه کنی .. باسه این کار یه کلاس استاتیک تعریف کرده و متدهای داخل شده هم استاتیک و پارامتر ورودی با کلمه This

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Globalization;

namespace PersiaDate
{
public static class PersianDate
{
public static string ConvertToPersian(this DateTime inputDate)
{
PersianCalendar persDate = new PersianCalendar();
String persia = persDate.GetYear(DateTime.Now) + "/" + persDate.GetMonth(DateTime.Now) + "/" + persDate.GetDayOfMonth(DateTime.Now) + " " + farsiDay();
return persia;
}
public string farsDay()
{
DayOfWeek ss = DateTime.Now.DayOfWeek;
switch (ss)
{
case DayOfWeek.Saturday: return "شنبه";
case DayOfWeek.Sunday: return "یک شنبه";
case DayOfWeek.Monday: return "دو شنبه";
case DayOfWeek.Tuesday: return "سه شنبه";
case DayOfWeek.Wednesday: return "چهارشنبه ";
case DayOfWeek.Thursday: return "پنج شنبه";
case DayOfWeek.Thursday: return "جمعه";
}
}
}
}

حالا باسه استفاده تو صفحه uses PersiaDate; رو استفاده کن .. هرجا یه متغییر DateTime استفاده کنی تو توابعش زیریش تابعی که تعریف کردی میاد