folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder C# İki Tarih Arası Gün Ay Yıl Hesaplama



C# İki Tarih Arası Gün Ay Yıl Hesaplama

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek

    Merhaba arkadaşlar.

    Elimde iki tarih var.

    iki tarih arasında ne kadar süre geçtiğini hesaplayarak metne dökmen istiyorum.

    Misal

    28.12.2018 - 22.02.2020 arasında =>Bu Tarihler Arasındaki Süre: 1 yıl 1 ay 25 gün gibi...

     

     DateTime SonMontaj1 = s.x.MontajTarihi.Value;
                    TimeSpan Fark1 = DateTime.Now - SonMontaj1;
                    int TotalGün = Convert.ToInt32(Fark1.Days.ToString());
                    int yil = TotalGün / 365;
                    int yilkalan = TotalGün - (yil * 365);
                    int ay = yilkalan / 30;
                    int aykalan = TotalGün - (ay * 30);
                    int gun = aykalan;
    
    
                    lblIlk3Fitre.Text = "En son " + (yil == 0 ? "" : yil.ToString().Replace("-", "") + " yıl ") + (ay == 0 ? "" : ay.ToString().Replace("-", "") + " ay ") + (gun == 0 ? "0 gün " : gun.ToString().Replace("-", "") + " gün ") + "önce değiştirilmiştir.";

    gibi birşeyle hesaplama yapmaya çalıştım ama bir yıl üzeri tarihlere yanılıyor.

    beynim yandı miğdem bulandı bıraktım.

    Asayisci tarafından 22/Şub/20 00:45 tarihinde düzenlenmiştir
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    end
    end's avatar
    Kayıt Tarihi: 16/Ekim/2016
    Erkek

    iki tarihi de timestamp'a çevireceksin,

    büyük olandan küçük olanı çıkartıp tekrar dd.mm.yyyy formatına çevireceksin.


    0x0480 takilin madem ﷽﷽﷽
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tawe
    Tawe's avatar
    Kayıt Tarihi: 16/Ağustos/2015
    Erkek

    Adam burda yazmış istediğin şekilde:

    https://forums.asp.net/p/1107932/1700897.aspx#1700897

     

    		DateTime date1 = new DateTime(2018, 12, 28);
    		DateTime date2 = DateTime.Today;
    		
    		int oldMonth = date2.Month;
                while (oldMonth == date2.Month)
                {
                    date1 = date1.AddDays(-1);
                    date2 = date2.AddDays(-1);
                }
    
    
                int years = 0, months = 0, days = 0, hours = 0, minutes = 0, seconds = 0, milliseconds = 0;
    
    
                // getting number of years
                while (date2.CompareTo(date1) >= 0)
                {
                    years++;
                    date2 = date2.AddYears(-1);
                }
                date2 = date2.AddYears(1);
                years--;
    
    
                // getting number of months and days
                oldMonth = date2.Month;
                while (date2.CompareTo(date1) >= 0)
                {
                    days++;
                    date2 = date2.AddDays(-1);
                    if ((date2.CompareTo(date1) >= 0) && (oldMonth != date2.Month))
                    {
                        months++;
                        days = 0;
                        oldMonth = date2.Month;
                    }
                }
                date2 = date2.AddDays(1);
                days--;
    
    
                TimeSpan difference = date2.Subtract(date1);
    
    
                Console.WriteLine(
                    "Difference: " +
                    years.ToString() + " years" +
                    ", " + months.ToString() + " months" +
                    ", " + days.ToString() + " days" +
                    ", " + difference.Hours.ToString() + " hours" +
                    ", " + difference.Minutes.ToString() + " minutes" +
                    ", " + difference.Seconds.ToString() + " seconds" +
                    ", " + difference.Milliseconds.ToString() + " milliseconds");

     

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    2021 Talihlisi
    dcpromo
    dcpromo's avatar
    Kayıt Tarihi: 05/Nisan/2017
    Erkek

    Favlayım lazım olacak.

    end bunu yazdı

    iki tarihi de timestamp'a çevireceksin,

    büyük olandan küçük olanı çıkartıp tekrar dd.mm.yyyy formatına çevireceksin.

    dart için örnek yapabilir misin mübarek?


    next next next install
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    herlocksholmes
    herlocksholmes's avatar
    Kayıt Tarihi: 16/Şubat/2014
    Erkek
    end bunu yazdı

    iki tarihi de timestamp'a çevireceksin,

    büyük olandan küçük olanı çıkartıp tekrar dd.mm.yyyy formatına çevireceksin.

    Ama diyor ki 1 yıl 2 ay 25 gün şeklinde yazıyla yazsın. Bu üstte attığımı aynen istediği gibi çevirebilir.


  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RitmFarbRacourci
    RitmFarbRacourci's avatar
    Kayıt Tarihi: 14/Mart/2008
    Erkek
    herlocksholmes bunu yazdı
    end bunu yazdı

    iki tarihi de timestamp'a çevireceksin,

    büyük olandan küçük olanı çıkartıp tekrar dd.mm.yyyy formatına çevireceksin.

    Ama diyor ki 1 yıl 2 ay 25 gün şeklinde yazıyla yazsın. Bu üstte attığımı aynen istediği gibi çevirebilir.

    Tamam işte, Dakika cinsinden çıkan sayıyı 1yıl'a denk gelen Toplam Dakika'ya bölecek, çıkan sonucun(BÖLÜM'ün) sağ'ına 1boşluk koyup ve "YIL" ifadesi ekleyecek. 

    Aynı şekilde,

    Bir üstteki işlemden KALAN sonucu, ortalama 1 aya tekabül eden Toplam Dakikaya bölecek, çıkan bölüme AY ifadesini ekleyecek.

    aynı şekilde. Kalanı toplam dakikaya bölecek. tekrarlayacak.

     

     

    yada böyle olması gerekir diye düşünüyorum. Modüler aritmetik değil mi, yada mod muydu neydi. ^^`

     

    diyom birşey eksik. Artık yıl, 28(29)-30-31 dengesiz'liği ^^`

    RitmFarbRacourci tarafından 22/Şub/20 18:32 tarihinde düzenlenmiştir

    I'şıkY'ılı;^^`) Zk't^^` RnSySyTk.Ödl.SpRtÇzBşBkYd Kryptia.agogE Sa'd-l'Suûd az.ç'k 'lmyn'Dşn Pnct'tnAnNttn Blgi,YpBlgi 'Ct'nDrm.CmdyDrm.MdrnDrm hRşYdşR ClptcPth'Strsm M'nPhs' Ld,X/Y YrYnZmnGrçklk,AlgBzklğ KrzFrst'tr Tiytr' Pugchv,Jtrn,İmmlmn,FllngLef,Pik' SuprmcySprrty CoBehTh elFnmno:NzrioRonldo AdnKy TkSs,TkHrf(?) .RtNsTk.KvMp.Mk.TrmDyn ScklkNmRzgr ŞkHcBy ccp.kky Snrlr'Çz SnaSnLzmsn 'NsnKsknçtr BgDppr.MagllnCl'ds.S'thCro's Ch'kW'ng CreazioneDiAdamo^^`, Arctrs.Spic' ArcScnd,YySnye TrbProp,TrbJet,TrbFan ~3.10^5km/sn~343m/sn ~900-1240m/snMacH RamJt,ScRamJt Przdi^^' Tbu.XL Prsek MAtv^^` mLAT G'dWllHnting(f). 3id't^^` TareZmenPr ParaMotor TrflrVArsİlşklr (-)+.(/)*,~ ZminŞkil . ..Bu imza @SubZero tarafindan degistirilmistir. "Bu kadar uzun karmakarisik bir imza yapma diye uyardim ama heeheeeey(^^D)_hey kim söylüyor, kim dinliyor." Imzanizi SubZero'ya bilgi vermeden degistirmeyiniz. Tesekkurler...
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    hocam senin formüllerin dogru ama iki seyi gözden kacirmissin :) 

    Ilk olarak kalan günü hesaplarken toplam ayi cikarmissin ama toplam yili cikarmamissin. Yani aykalan söyle olmasi lazim

    int aykalan = TotalGün - (ay * 30) - (yil * 365);

    Bu sekilde calisiyor, peki ne kadar dogru? Cok dogru degil cünkü yine gözden kacirdigin sey, artik yil :) senin formülün her ayi 30 gün olarak kabul ediyor ve her yili da 365 gün kabul ediyor. O yüzden zaman farki büyüdükce dogruluk orani azaliyor.

    O yüzden artik yili ve 30-31 günleri hesaba katan bir cözüme ihtiyacin var. Su sekil bir örnek var 

    https://stackoverflow.com/a/36410981/1022138

    burada eleman artik yil (leap year) hesabini gözönünde bulundurarak yapmis. Denedim calisiyor.

    Surdaki siteden de saglamasini yaptirabilirsin https://www.timeanddate.com/date/duration.html

     

     

     

     

     

    unbalanced tarafından 22/Şub/20 18:20 tarihinde düzenlenmiştir

    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
Toplam Hit: 1833 Toplam Mesaj: 8
tarih hesaplama