Çözüldü Belirtilen tarihin bulunduğu haftadaki istenilen günü bulma işlemi nasıl yapılır?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

genslife

Centipat
Katılım
16 Ağustos 2022
Mesajlar
153
Çözümler
5
Yer
Diyarbakır
Daha fazla  
Cinsiyet
Erkek
Meslek
IT Uzmanı
Merhaba,

C# programlama dilinde bir çalışma geliştiriyorum firmamız için.
Sisteme belirttiğimiz tarihin içerisinde bulunduğu haftanın belirli bir gününü bulmak istiyorum.

Örnek verecek olursak:
Sisteme belirtilen tarih 12.09.2023 (salı) o hafta içerisinde bulunan (perşembe) gününün tarihini sistemde bulmam gerekiyor.

Ya da şöyle bir örnek vereyim:
Bugün çarşamba ise bu haftaki çarşambadan sonraki cumayı bulmam gerekiyor tarih olarak. Yardımlarınızı bekliyorum.
 
Çözüm
Hayır gün yeterlidir bizim için saat önemli değil.
C#:
int dayOfWeek = (int)DateTime.Now.DayOfWeek;
int pazDif = dayOfWeek == 1 ? 7 : (7 + (1 - dayOfWeek)) % 7;
int perDif = dayOfWeek == 4 ? 7 : (7 + (4 - dayOfWeek)) % 7;
Console.WriteLine(DateTime.Now.AddDays(Math.Min(pazDif, perDif)).ToString("dd.MM.yyyy HH:mm"));
pazDif ve perDif değişkenleri güncellendi. Kısa olması açısından ternary kullandım if de kullanılabilirdi. Eğer bugün pazartesi ise pazartesi farkını 7 olarak atadık, perşembe ise perşembe farkını 7 olarak atadık.(7 otomatik olarak Math.Min içerisinde elenecek ve diğer güne atayacak)

Boş yere ikisini de hesaplamıyım diyorsan if ile kontrol edip sadece pazartesiyi veya sadece perşembeyi hesaplatmayı da yapabilirsin.
Geçmiş günler de dahil olacaksa:
1- gün değişkenini haftanın ilk gününe alırız.
2- bu sefer de döngü koşulunda haftanın aradığımız günü olacak şekilde gün ekleriz döngü sonunda hafta içerisindeki aradığımız günün tarihini bulmuş oluruz.

Kod istemediğinizi söylemişsiniz ondan çok detay yazamadım isterseniz daha detaylı anlatmaya çalışırım.
 
Merhaba,

C# programlama dilinde bir çalışma geliştiriyorum firmamız için.
Sisteme belirttiğimiz tarihin içerisinde bulunduğu haftanın belirli bir gününü bulmak istiyorum.

Örnek verecek olursak:
Sisteme belirtilen tarih 12.09.2023 (salı) o hafta içerisinde bulunan (perşembe) gününün tarihini sistemde bulmam gerekiyor.

Ya da şöyle bir örnek vereyim:
Bugün çarşamba ise bu haftaki çarşambadan sonraki cumayı bulmam gerekiyor tarih olarak. Yardımlarınızı bekliyorum.
Yani C# için örnek veremem ne yazık ki ama mantık olarak şunu uygulayabilirsin, ne kadar doğru bilmiyorum tabi ama toplam 7 kez tekrar edecek bi for döngüsü oluşturursun. Seçilen tarihten itibaren 7 gün ekleye ekleye ilerler, hangi gün istediğin güne denk geliyorsa otomatik (sizde break yada continue olabilir) durdurabilirsin. Bu sayede o günü almış olursun.

php için örnek vereyim sen C# ile ilgili düzenlemeleri yapabilirsin, fikrin olur.


PHP:
<?php
$selected_date = "23-08-2023";

for ($i=0; $i < 21; $i++) {
    
    $date = date("l",strtotime("$selected_date +$i day"));
    
    if($date == "Tuesday"){
        $today = date("d-m-Y",strtotime("$selected_date +$i day"));
        echo $today;
        break;
    }
    
}
 
Yani C# için örnek veremem ne yazık ki ama mantık olarak şunu uygulayabilirsin, ne kadar doğru bilmiyorum tabi ama toplam 7 kez tekrar edecek bi for döngüsü oluşturursun. Seçilen tarihten itibaren 7 gün ekleye ekleye ilerler, hangi gün istediğin güne denk geliyorsa otomatik (sizde break yada continue olabilir) durdurabilirsin. Bu sayede o günü almış olursun.

php için örnek vereyim sen C# ile ilgili düzenlemeleri yapabilirsin, fikrin olur.


PHP:
<?php
$selected_date = "23-08-2023";

for ($i=0; $i < 21; $i++) {
   
    $date = date("l",strtotime("$selected_date +$i day"));
   
    if($date == "Tuesday"){
        $today = date("d-m-Y",strtotime("$selected_date +$i day"));
        echo $today;
        break;
    }
   
}
Merhaba,

Şuanda sizinde düşündüğünüz şekilde yaptım sistemi denemeleri yaptım. Bilgisayarın tarihini ileri geri alarak test ettim doğru sonuca ulaşabiliyorum. Benimde aklıma başka bir fikir gelmedi.

@TheGomezMC dediğiniz şekildede bir test yapacağım bakalım hangisi daha pratik olacak.


Kullanmak isteyen olursa diye bırakıyorum.



C#:
    string bugun = DateTime.Now.DayOfWeek.ToString();
            string pazartesi = DayOfWeek.Monday.ToString();
            string sali = DayOfWeek.Tuesday.ToString();
            string carsamba = DayOfWeek.Wednesday.ToString();
            string persembe = DayOfWeek.Thursday.ToString();
            string cuma = DayOfWeek.Friday.ToString();
            string cumartesi = DayOfWeek.Saturday.ToString();
            string pazar = DayOfWeek.Sunday.ToString();

            

            if (bugun == persembe)
            {
                Response.Write(DateTime.Now.AddDays(4).ToLongDateString().ToString());
            }
            if (bugun == cuma)
            {
                Response.Write(DateTime.Now.AddDays(3).ToLongDateString().ToString());
            }
            if (bugun == cumartesi)
            {
                Response.Write(DateTime.Now.AddDays(2).ToLongDateString().ToString());
            }
            if (bugun == pazar)
            {
                Response.Write(DateTime.Now.AddDays(1).ToLongDateString().ToString());
            }
            if (bugun == pazartesi)
            {
                Response.Write(DateTime.Now.AddDays(3).ToLongDateString().ToString());
            }
            if (bugun == sali)
            {
                Response.Write(DateTime.Now.AddDays(2).ToLongDateString().ToString());
            }
            if (bugun == carsamba)
            {
                Response.Write(DateTime.Now.AddDays(1).ToLongDateString().ToString());
            }
 
Merhaba,

Şuanda sizinde düşündüğünüz şekilde yaptım sistemi denemeleri yaptım. Bilgisayarın tarihini ileri geri alarak test ettim doğru sonuca ulaşabiliyorum. Benimde aklıma başka bir fikir gelmedi.
Hocam biraz spagetti olmuş gibi. Seneryoyu biraz daha açıkca anlatırsanız düzgünce yazalım. Cuma-perşembe vs neye göre belirliyorsun onu anlamadım.
 
Şöyle belirteyim hocam.

Örneğin bize gelecek ödemeler var. Ödemeler şöyle hesaplanıyor her ödemenin bir vade günü var örnek veriyorum ödemenin vade tarihi 02.09.2023 ama ödemeleri pazartesi ve perşembe tek hesaba yatırıyorlar. 02.09.2023 (Cumartesi) günü olduğu için bu ödemenin 04.09.2023 (Pazartesi) geleceğini görmem gerekiyor. Yada örneğin vade tarihi 04.09.2023 (Pazartesi), bu ödeme bana 07.09.2023 (Perşembe) günü gelecek.

Bize haftada 2 gün ödeme geliyor Pazartesi ve Perşembe.
 
Şöyle belirteyim hocam.

Örneğin bize gelecek ödemeler var. Ödemeler şöyle hesaplanıyor her ödemenin bir vade günü var örnek veriyorum ödemenin vade tarihi 02.09.2023 ama ödemeleri pazartesi ve perşembe tek hesaba yatırıyorlar. 02.09.2023 (Cumartesi) günü olduğu için bu ödemenin 04.09.2023 (Pazartesi) geleceğini görmem gerekiyor. Yada örneğin vade tarihi 04.09.2023 (Pazartesi), bu ödeme bana 07.09.2023 (Perşembe) günü gelecek.

Bize haftada 2 gün ödeme geliyor Pazartesi ve Perşembe.
C#:
while (baslangicTarihi.DayOfWeek != DayOfWeek.Monday && baslangicTarihi.DayOfWeek != DayOfWeek.Thursday)
        {
            baslangicTarihi = baslangicTarihi.AddDays(1);
        }

Girilen tarihten sonraki pazartesi ve perşembe gününü bulmak isterseniz bu döngüyü kullanabilirsiniz.
 
C#:
while (baslangicTarihi.DayOfWeek != DayOfWeek.Monday && baslangicTarihi.DayOfWeek != DayOfWeek.Thursday)
        {
            baslangicTarihi = baslangicTarihi.AddDays(1);
        }

Girilen tarihten sonraki pazartesi ve perşembe gününü bulmak isterseniz bu döngüyü kullanabilirsiniz.
Hocam pardon buradaki baslangicTarihi hangi tarih anlamına geliyor. Haftanın ilk günü mü, bugün mü?
 

Geri
Yukarı