Miladi Takvim'i Hicri'ye Çevirme + Dini Bayram Günlerini Bul
husonet15.04.2004 - 00:32:35
Arkadaşlar bu konu Forum'da Çok soruluyordu ilgimi çekti ve sizler için yazdım. Hayırlı olsun...

Yazdığım Kodlar Türk Tarih Kurumu Sayfasına göre test edebilirsiniz. Ben on onbeş defa test ettim çalışıyor. http://www.ttk.gov.tr/takvim.asp

Uses kısmına Math unit'ini eklemeyi unutmayın ayrıca form'unuza 1 adet DateTimePicker bileşeni ve 1 adet Button ekleyiniz.



Function IntPart(FloatNum:Double):Double;
Begin
if FloatNum < -0.0000001 Then
Result:= Ceil(FloatNum -0.0000001)
Else
Result:= Floor(FloatNum +0.0000001);

End;


procedure TForm1.Button1Click(Sender: TObject);
var
Tarih:TDateTime;
JD, L,N, J:TDateTime;
Gun, Ay, Yil: Word;
AyStr:String;
begin
Tarih := DateTimePicker1.Date;
DecodeDate(Tarih, Yil, Ay, Gun);
jd := IntPart((1461*(Yil + 4800 + IntPart((Ay-14)/ 12)))/ 4) + IntPart((367*(Ay-2-12*(IntPart((Ay-14)/ 12))))/ 12)-IntPart((3*(IntPart((Yil+4900+IntPart((Ay-14)/ 12))/ 100)))/ 4)+Gun-32075;
L := Jd - 1948440 + 10632;
N := IntPart((l-1)/10631);
L := L - 10631 * N + 354;
J := (IntPart((10985-L)/5316))*(IntPart((50*L)/17719))+(IntPart(L/5670))*(IntPart((43*L)/15238));
L := L-(IntPart((30-J)/15))*(IntPart((17719*J)/50))-(IntPart(J/16))*(IntPart((15238*J)/43))+29;
Ay := Ceil(((IntPart((24*L)/ 709))));
Gun := Ceil(L-IntPart((709*ay)/ 24));
Yil := Ceil(30* N + J -30);

Case (Ay) Of
1: AyStr:= 'Muharrem';
2: AyStr:= 'Safer';
3: AyStr:= 'Rebiü''l- Evvel';
4: AyStr:= 'Rebiü''l- Ahir';
5: AyStr:= 'Cemaziye''l- Evvel';
6: AyStr:= 'Cemaziye''l- Ahir';
7: AyStr:= 'Recep';
8: AyStr:= 'Saban';
9: AyStr:= 'Ramazan';
10: AyStr:= 'Sevval';
11: AyStr:= 'Zi''l-ka''de';
12: AyStr:= 'Zi''l-Hicce';
End;
if AyStr = 'Sevval' Then //Örnek 14/11/2004 Tarihi Ramazan Bayramı
Begin
if (Gun >= 1) and (Gun <=3) then
ShowMessage('Ramazan Bayramı Tatili !!!');
End
Else
if AyStr = 'Zi''l-Hicce' Then //Örnek 21/01/2005 Tarihi Kurban Bayramı
if (Gun >= 10) and (Gun <=14) then
ShowMessage('Kurban Bayramı Tatili !!!');



ShowMessage(IntToStr(Gun) + ' ' + AyStr+ ' ' + IntToStr(Yil));
end;


Görüşlerinizi yazarsanız sevinirim.

Hüseyin Özdemir.
huseyin@durmus.net
 
oguzozturk7415.04.2004 - 01:15:52
Ellerine sağlık Hüseyin kardeş.. :)

Saygılar
Oğuz ÖZTÜRK
 
hdayi15.04.2004 - 10:13:24
Ellerine sağlık Hüseyin.
3 Rebiü'l Evvel 1390'da doğmuşum. Sanırım miladi takvimi tercih edeceğim (yaş biraz fazla çıktı da :) )
 
husonet15.04.2004 - 10:29:50
Rica Ederim.

Bu arada HDayi Hocam size Amca mı desem Abi mi desem ne desem siz bayağı genç gösteriyorsunuz. Bu gençliğinizin sırrı nedir? Benden 8 Yaş büyüksünüz. (9 Mayıs 1970) lisiniz galiba Yan yana gelsek eminimki benden 8 yaş buyuk olduğuna inanmazlar Aksini savunurlar. Maaşallah.

Bu arada bende bakayım Kaç yaşındayım 28 Rebiü''l- Evvel 1398 çıkıyor.
Bunda sonra yaşımı soran olursa 1398 doğumluyum diyeceğim. :lol: :lol: :lol: :lol:

İyi Çalışmalar.
 
husonet15.04.2004 - 10:30:53
Ayrıca benim şimdiye kadar emekli olmam lazımdı Yaş oranını 610 seneyemi çıkardılar? :roll:
 
mege15.04.2004 - 10:34:01
ah ah ramazan bayramı 14 Kasım Pazara geliyor, içim yandı aya gitti bal gibi tatil :evil: Kurban bayramında 21 Ocak Cuma ya :cry: :cry:
gitti tatiller ehüüü, allahtan yılbaşı ramazanla çakışmıyor, yoksa o tatilde giderdi.

ya biz buara niye diğer dinlerin bayramlarını kutlamıyoruz :P yazık değilmi gayrimüslim vatandaşlarımıza, şimdi paskalya bayramı falan olsa iyi olmazmıydı :)

şaka biyana hocam program güsel olmuş elinize sağlık. Doğum günüm 25 Zi'l Hicce 1401 :) vay be Fatihin Fedaisi ile beraber doğmuşuz :)
 
hdayi15.04.2004 - 10:34:20
Valla Hüseyin özel bir sırrım yok. Allah vergisi. Normale bakarsak herhalde acaip yaşlı görünmem lazım, çay, sigara, kahve ne ararsan var. Sadece çok uyurum :)
Bu arada iyice açık etmişsin yaşımı falan, genç gösterdiğim için daha gencim falan diyordum herkese ben, şimdi ne diyeceğim :)
 
coderlord22.02.2005 - 15:00:23
Mükemmel.. Tam aradığım şeydi. Bir ara kendim yazayım dedim. Nette aradım bunun formülünü. Ramazan bayramı hangi güne geliyor öğrenmek için. Ancak baktım ki iş ayın yörünge hesabına gidiyor, vazgeçmiştim. Teşekkürler.
 
bobasturk22.02.2005 - 18:30:30
merhabalar,

hüseyin abi deneyemedim ama eminimki güzel olmuştur.

neden deneyemedim derseniz bu soruyu sormaya utanıyorum ama fonction u nereye yazacağımı bilemedim. bildiğim kadarı ile private veya public kısmına yazılıyor ama oralara yazdım begin alanını kırmızıya boyuyor ve bekliyor. begin de bi hata var diyor ama bilemedim

hata

'END' expected but 'BEGİN' found

nerde yanlışım var bilemedim.

kolay gelsin.
 
husonet22.02.2005 - 18:50:44
Form una 1 adet dateTimePicker ve Bir adet button ekle kodu implementation kısmının altına yapıştır. Sonra da Buton un OnClick eventine bir kere tıkla Ardından Run yap.

Fonksiyonıumuz bu
Function IntPart(FloatNum:Double):Double;
Begin
if FloatNum < -0.0000001 Then
Result:= Ceil(FloatNum -0.0000001)
Else
Result:= Floor(FloatNum +0.0000001);

End;


Geri kalanı Button bileşenimizin OnClickEvent Codu.

Kolay gelsin...
 
bobasturk22.02.2005 - 21:03:50
merhabalar,

6 cemaziye'l-evvel 1389 doğumlu imişim. garip geldiği kadar da hoş.

abi yardımın için sağol gördüğün gibi işi çözdüm. fonction deyince yukarıya bi yere yazıldığını sanmış idim o yüzden karıştırdım.

yorduğum için özür dilerim ve eline sağlık derim.
kolay gelsin
 
P20623.02.2005 - 10:29:57
Bende 20 Cemaziye'l- Ahir 1400 doğumluymuşum. :) Ama Bende yaşımı hiç göstermem :) en fazla 1405 doğumlu gibi .
 
P20631.08.2005 - 11:29:27
@Husonet daha önce kodunu incelemiştim ama bu gün lazım oldu kullandım. Sana Teşekkür ederim.

Kurban bayramı için <=14 yerine <=13 ile değişmesi lazım yoksa bayram 5 gün oluyor :)

Birde kandilleri de ekledim belki bakşa arkadaşların işine yarar.


If AyStr = 'Recep' Then begin
If gun = 26 Then ShowMessage('Miraç Kandili');

If gun = 6 Then ShowMessage('Regaip Kandili')
End;

If AyStr = 'Saban' Then begin
If gun = 14 Then ShowMessage('Berat Kandili')
End;

If AyStr = 'Rebiü''l- Evvel' Then begin
If gun = 11 Then ShowMessage('Mevlid Kandili')
End;
If AyStr = 'Ramazan' Then begin
If gun = 26 Then ShowMessage('Kadir Gecesi')
End;


Herkese iyi çalışmalar..
 
NOT : Bu sayfa google'un siteyi indekslemesi içindir. www.delphiturkiye.com/forum/ adresini kullanınız!
1998-2006 www.delphiturkiye.com