[Çözüldü] Python yardım (Tezkere programı)

Başlatan tarik.taf, 12 Kasım 2019 - 20:46:27

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

tarik.taf

Selamlar;

Terhis hesaplama programı yapmak istiyorum.

time,datetime vb bir çok modülü inceledim. Malum pythonda çoook yeniyim ama mantığıma yatmadı bir konu.

Öncelikle belirli bir tarihten günümüze kadar olan tarih farkı vb * her şey var; ancak benim istediğim şey ise;

Askerlik başlangıç tarihini tarih verisi olarak alıcam

Örnek 01.01.2019, bu tarih girilince otomatik olarak hemen normal terhis tarihi 01.07.2019 (6 ay) sonrası yazacak;

- Yani 01.01.2019 yazdığımda 01 Temmuz 2019 (180 gün değil/6 ay sonrayı gösterecek)

Müteakiben, ceza, istirahat vb diğer faktörleri isteyeceğim kullanıcıdan, mesela 10 gün cezası var 01.07.2019 yerine 11.07.2019 yazacak,

Yani alınan tarih bilgisi ile 6 ay bilgisini taoplayacak ve çıkaracak.

Yardımcı olursanız sevinirim.

Teşekkürler
Bizler Aziz Türk Milletinin Hizmetkarıyız !!! Sessizce Nöbetteyiz

012rev3

StackOverflow dan yardım alarak şöyle bir düzenleme yaptım.
Python3 için gerekli düzenlemeleri siz yaparsınız diye umuyorum. Ayrıca kullanıcı girişi kontolu de önemli olabilir.
Kolay gelsin.

#!/usr/bin/env python
import datetime
# Hesaplanan gun sayisi
_gun = 180
_gosterilenformat = '%d-%m-%Y'

_giristarihiiste = raw_input('Baslangic tarihini girin: Ornek: 2019/06/12: ')
yil, ay, gun = map(int, _giristarihiiste.split('/'))

def get_date(_format="%Y-%m-%d", _gun=0):
    _giristarihi = datetime.datetime(yil,ay, gun)
    if (_gun != 0):
        _kalanzaman = _giristarihi + datetime.timedelta(days=_gun)
    else:
        _kalanzaman = _giristarihi

    return _kalanzaman.strftime(_format)

_sonuc = get_date(_gosterilenformat, _gun)

print "Baslangic: ", _giristarihiiste
print "Sonuc: ", _sonuc
"Her şey mümkün olduğunca basitleştirilmeli ancak sıradanlaştırılmamalıdır." Albert Einstein

tarik.taf

Teşekkürler deneyip, geri bildirim yapıcam
Bizler Aziz Türk Milletinin Hizmetkarıyız !!! Sessizce Nöbetteyiz

tarik.taf

Öncelikle ilginize çok teşekkürler,

Program kodlandığında hatalar veriyordu, onları düzelttim, kullanıcıdan input olarak tarihi istiyor, split ile bölüyor ama 180 gün ekleyip şu gün eder gibi bir sonucu döndürmedi. Ben python 3x kullanıyorum bu arada.

Bir de sanırım zorlandığım kısmı anlatamadım, askerlik 180 gün değil, 6 ay. Yani 179 da olabilir 181 de; bu yüzden 01.01.2019 yazdığımızda 180 gün değil 6 ay saymalı 01.07.2019 olmalı.

* Her yerde belirli bir tarihten bugüne kaç gün olmuş örnekleri var. bir çok yere de yazdım ama herhangi bir çözüm bulamadık.

* Mantıksal bakıldığında belirli bir tarih üzerine 6 ay eklenecek (180 gün değil)

Bakalım, araştırmalara devam ediyorum, Mutlaka bir fonksiyon vardır. İlgin ve yardımın için tekrar teşekkürler.
Bizler Aziz Türk Milletinin Hizmetkarıyız !!! Sessizce Nöbetteyiz

012rev3

Pardon hocam, öyleyse şuradaki konu size yardımcı olacaktır. Burada ay üzerinden ekleme yapılıyor.
https://stackoverflow.com/questions/4130922/how-to-increment-datetime-by-custom-months-in-python-without-using-library
import datetime
import calendar

def add_months(sourcedate, months):
    month = sourcedate.month - 1 + months
    year = sourcedate.year + month // 12
    month = month % 12 + 1
    day = min(sourcedate.day, calendar.monthrange(year,month)[1])
    return datetime.date(year, month, day)

somedate = datetime.date.today()
print(somedate)
somedate_add = add_months(somedate,6)
print(somedate_add)
print(somedate_add - somedate)

Örnek çıktı;
2019-11-18
2020-05-18
182 days, 0:00:00


Biraz hızlı bir cevap oldu, umarım bu sefer doğru anlamışımdır.
"Her şey mümkün olduğunca basitleştirilmeli ancak sıradanlaştırılmamalıdır." Albert Einstein

tarik.taf

Bu defa oldu evet. Çok teşekkürler.

Artık bunu geliştirip, sayılmayan günleri üzerine ekleyip gerçek tarihi bulmak :)

Gerçekten beni zorlu geçen bir araştırma döneminde sonuca bir adım daha yaklaştırdınız. Sağolun
Bizler Aziz Türk Milletinin Hizmetkarıyız !!! Sessizce Nöbetteyiz

Empat

Sorununuz çözüldüyse, forum düzeninin sürdürülebilirliğine katkı sağlamak için, konu başlığınızı [Çözüldü] olarak işaretlemenizi rica ediyoruz.

Başka bir sorunun yanıtını bulamazsanız ya da bir sorunla karşılaşırsanız, yeni bir konu açabilirsiniz.

İyi forumlar.
Everything for me is just Peace - Love - Coding. Also, as they say: I am a programmer, I have no life!

tarik.taf

Programı yazdım eklemeyi unutmuşum.

https://github.com/tvardar/TerhisHesapla adresinden indirip kullanabilirsiniz.

Yeni askerlik sistemine göre kodlanmıştır.

Terhisi etkileyen unsuralar

*Geç katılış, Ceza, Rapor (6 gün üzerindeki her gün) terhis tarihinin üzerine eklenir.
*Erken terhis, Yol izni ise terhis tarihini erkene çeker

ayrıca 31 30 ve 28 çeken ay durumu dikkate alınmıştır.

Kullanma ihtiyacı olan arkadaşlar kullanabilirler. Umarım faydalı olur.

Python 3x ile kodlanmıştır
Bizler Aziz Türk Milletinin Hizmetkarıyız !!! Sessizce Nöbetteyiz