# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > VB.NET >  تقویم هجری قمری

## SYSMAN

چه طور می تونم از تقویم قمری در Net 2005. استفاده کنم؟
از HijriCalendar نمی شه استفاده کرد(2 روز با تقویم قمری که ما در تقویم ها داریم فرق داره)

----------


## linux

چرا میشه استفاده کرد می تونی تنظیم کنی

----------


## SYSMAN

چه طوری می شه تنظیم کرد؟

----------


## linux

Dim hc As New Globalization.HijriCalendar
        hc.HijriAdjustment = 2

بقیه اش هم از msdn

----------


## niloufar

سلام
شنیدم تو 2005 شمسی هم گذاشته. آیا کسی خبری داره؟

----------


## اَرژنگ

> سلام
> شنیدم تو 2005 شمسی هم گذاشته. آیا کسی خبری داره؟


http://polytopia.com.au/default%5Bla...D%5Blang=fa%5D

----------


## niloufar

> http://polytopia.com.au/default%5Bla...D%5Blang=fa%5D


سلام
خیلی ممنون
من سعی کردم که بر عکس اون کد رو عمل کنم یعنی میلادی بدهم و شمسی بگیرم، اما بازم خود میلادیه را برگردوند، چرا؟
شما یا هر یک از دوستان میشه توضیحات کامل تری در مورد کلاس های مربوط به تقویم بدهید؟

----------


## linux

!
اگر به چندتا موضوع قبلتر نگاه کنی من یه مثال هم زدم.
توی msdn هم کاملا توضیح داده

----------


## اَرژنگ

> سلام
> خیلی ممنون
> من سعی کردم که بر عکس اون کد رو عمل کنم یعنی میلادی بدهم و شمسی بگیرم، اما بازم خود میلادیه را برگردوند، چرا؟
> شما یا هر یک از دوستان میشه توضیحات کامل تری در مورد کلاس های مربوط به تقویم بدهید؟


کدام قسمت کد را دوست دارید توضیح بدم؟
شما ممکنه کدی را که برایه تبدیل میلادی به شمسی استفاده کردید را با مثال تبدیل تاریخ میلادی به شمسی که در لینکی که فرستادم مقایسه کنید. هر دوتاشن یکیین؟

----------


## SYSMAN

دستت درست linux

----------


## niloufar

سلام
من دقیقا همون کد اونجا را (که اول فقط برای شمسی به میلادی بود و الان دو طرف هم داره) رو دقیقا کپی کردم ولی در هر دوصورت میلادیه اونا رو نشون میده.
اصلا همین که کلاس Date ساخته میشه (در New کردن یک نمونه از آن) هرچی باشه، میلادی برمیگردونه!!!

----------


## linux

<code>
Dim pc As New Globalization.PersianCalendar
        Dim d As Date = Now.Date
        MsgBox(pc.ToDateTime(1384, 11, 6, 0, 0, 0, 0))
        MsgBox(pc.GetYear(d) & "/" & pc.GetMonth(d) & "/" & pc.GetDayOfMonth(d))
</code>
این هم یک مثال

----------


## اَرژنگ

> سلام
> من دقیقا همون کد اونجا را (که اول فقط برای شمسی به میلادی بود و الان دو طرف هم داره) رو دقیقا کپی کردم ولی در هر دوصورت میلادیه اونا رو نشون میده.
> اصلا همین که کلاس Date ساخته میشه (در New کردن یک نمونه از آن) هرچی باشه، میلادی برمیگردونه!!!


مرسی، درستش کردم، تستش هم کردم، برایه تبدیل از هر نوع تقویمی میتوانید استفاده‌اش کنید.
به هیچ مشکلی نباید بر بخورید، مشکلی داشتید بهم لطفاً اطلاع بدید

----------


## niloufar

سلام
ممنون. صحیح بود.

----------


## SYSMAN

> Dim hc As New Globalization.HijriCalendar
>         hc.HijriAdjustment = 2
> 
> بقیه اش هم از msdn


دستت درد نکنه ولی این کد اشکال داره MSDN رو هم دیدم اونم اشکال داشت. برای دو تا ماه مختلف امتحان کنید درست جواب نمی ده یک روز پس و پیش می شه.

----------


## linux

:)
تقویمی که روی شکم محاسبه بشه همین هست.
با توجه به اینکه این تقویم قمری بر اساس رویت هلال ماه هست خیلی دقیق نیست آن وقت چیزی که توی عربستان استخراج می کنند با ایران فرق می کنه و خود اعراب الان دارن از تقویم میلادی استفاده می کنند. مصر و عراق و .. کلا همه کشورها بجز عربستان تقویم رسمی شان میلادی هست و کشورهای عربی هم مراسم مذهبی را با عربستان انجام میدهند این وسط ماایرانیها ساز دیگری میزنیم! حالا این تقویم را برای چه کاری می خواهید؟

----------


## SYSMAN

یک برنامه تقویم قمری لازم دارم که با تقویم ما یکسان باشه.
کد تبدیل میلادی یا شمسی به قمری نیست؟

----------


## linux

چرا من قبلا کدش را فرستادم یه جستجو کن در این فروم و در گوگل دنبال calmath بگرد.

----------


## Peyman_Ranjbar

توی msdn  گفته که در حالت عادی بین صفر تا دوروز خطا داره البته شاید من درست متوجه نشدم
خودتون این قسمت رو بخونین شاید تقصیر رمضان باشه!

This implementation of the *HijriCalendar* class adjusts the calendar date  by adding or subtracting a value from zero to two days to accommodate the  variances in the start and the end of Ramadan and to accommodate the date  difference between countries/regions. That value is stored in the HijriAdjustment  property. If *HijriAdjustment* is not set explicitly, it derives its value  from the settings in Regional and Language Options (or Regional Options or  Regional Settings) in Control Panel in Windows and is stored in the registry  value HKEY_CURRENT_USER\Control Panel\International\AddHijriDate. However, that  information can change during the life of the AppDomain. The *HijriCalendar*  class does not detect changes in the system settings automatically.

----------


## SYSMAN

حق با شماست ولی چیزی که اشتباه باشه که به مفت هم نمی ارزه. دست شما هم درد نکنه linux من اون تابع calmath هم امتحان کردم اون هم درست جواب نمی ده.

----------


## Black_Queen

ببخشید ولی من اصلا با گرفتن تاریخ درست شمسی و قمری مشکل دارم چجوری باید این کارو بکنم؟ اخه تاریخهایی که میده 2765/11/13 هستش برای فمری و برای شمسی هم یک تاریخ بی معنی دیگه مثل همین !!!!

----------


## ali_najari

میخواستم ببینم چطوری میشه یه کدی رو از دستگاه کدخوان گرفت ؟

----------


## amirsajjadi

با سلام
این کد برای تبدیل میلادی به شمسی
Dim F As New Globalization.PersianCalendar
MsgBox(DateSerial(F.GetYear(Now), F.GetMonth(Now), F.GetDayOfMonth(Now)))

برای قمری هم از کلاس Hijri استفاده کنید و طریقه استفادشم دقیقا مثل شمسی

----------

