Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
zaman farkı hesabı
#1
kullanıcıdan aldığım  tarih ve saate şu andan itibaren ne kadar yıl-ay-gün-saat-dakika kaldığını bir labele yazdırmayı nasıl yapabilirim?
Cevapla
#2
Merhaba.

- Öncelikle bir-iki soru sormak isterim. Ardından yapmanız gereken işlemi tarif edeyim onu yapınca gerisi gelecektir.

- Kullanıcıdan Tarih ve Saat verisi STRING olarak mı alınacak veya bu veri elle mi girilecek yoksa sizin denetiminizde bir veya iki DateTimePicker ile kurallı mı olacak system-help.png

- Bunları neden sordum : DateTime tipinde bir değişkene bu veriyi girdiğinizde DateUtils unitinden yardım alarak her türlü hesaplamayı yapabilirsiniz diyebilmek için   Idea
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#3
(07-02-2019, Saat: 18:33)mrmarman Adlı Kullanıcıdan Alıntı: Merhaba.

- Öncelikle bir-iki soru sormak isterim. Ardından yapmanız gereken işlemi tarif edeyim onu yapınca gerisi gelecektir.

- Kullanıcıdan Tarih ve Saat verisi STRING olarak mı alınacak veya bu veri elle mi girilecek yoksa sizin denetiminizde bir veya iki DateTimePicker ile kurallı mı olacak system-help.png

- Bunları neden sordum : DateTime tipinde bir değişkene bu veriyi girdiğinizde DateUtils unitinden yardım alarak her türlü hesaplamayı yapabilirsiniz diyebilmek için   Idea

Veritabanında String olarak tanımladım tarihi alınacak alanı. Ancak  tarih hesaplamalarının yapılacağı bir programda bu alanları Date olarak tanımlamam daha iyi olacaksa değiştirebilirim. 

 Tarihi DateTimePicker ile alacam. Ancak DateTimePicker ile doğum tarihi gibi yılların çok değişeceği girişleri almak kullanışlı olur mu diye merak ediyorum? Mask edit ile yapılsa daha mı iyi olur acaba?
Cevapla
#4
Merhaba.

- Giriş kısmı tutarlı bir STRING de olabilir veritabanından TDateTime tipinde de olabilir. Asıl önemli olan hesaplama öncesi hepsinin tarih tipine dönüştürmeye uygun olması. Hataya sebebiyet vermesinin önüne geçilmesi içindir.

- Girişleri "DateTime" tipinde bir değişkene aktarabildiğinizi düşünerek bu aşamadan devam edelim.

- DateUtils diye bir UNIT mevcut. Bunu USES satırlarına eklerseniz aşağıda "DateUtils." dediğiniz anda ( sondaki noktayı koyduğunuz anda ) size seçenekler dökülecektir. Bunları bir incelemenizi öneriyorum. 

Örneğin :

      DateUtils.HourOf();
      DateUtils.MinuteOf();
     DateUtils.DayOf();
     DateUtils.DayOfTheWeek();
     DateUtils.DecodeDateTime();
     DateUtils.HoursBetween();
     DateUtils.DaysBetween();

şeklinde sayısız fonksiyon göreceksiniz. Bunların isimleri size neler yapabileceğinizi öngörmeniz için kılavuz olacaktır.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#5
Hocam Selamlar. Bu bir fikir verebilir belki sana. 

var
SaniyeFark:integer;
begin
edit1.text:='01:01:2019 10:00:00';//edit1ye tarih saat değerini yazdır.
edit2.text:='02:01:2019 10:10:30';//edit2ye tarih saat değerini yazdır.
edit3.Text:=floattostr(secondsbetween(StrtoDatetime(edit1.text),(strtodatetime(edit2.Text)))); //iki tarih arasını saniye cinsine çevir
SaniyeFark:=StrToInt(edit3.Text); 
edit4.Text:=(IntToStr(((((SaniyeFark div 60)div 60) div 24)))+' Gün '+IntToStr(((SaniyeFark div 60)div 60)mod 24)+' Saat '+IntToStr((SaniyeFark div 60)mod 60)+' Dk '+IntToStr(((SaniyeFark mod 60)mod 60))+' Sn '); // iki tarih arası bulduğun saniyeyide dk ve saate bölerek zamanı hesaplayabilirsin.


Sonuç : 1 Gün 10 Dk 30 Sn

Bir bir projemde bu şekilde kullanmıştım. 
Kolay Gelsin.
Cevapla
#6
Verilen cevaplardan dolayı teşekkür ederim. işimi gördü.
Cevapla
#7
Merhaba,

Bu tarz işlemler için kendinize bir kütüphane oluşturmalısınız. DateUtils kütüphanesine göz gezdirin ve ihtiyacınız olan fonksiyon ve özellikleri kullanarak kendinize özel bir kütüphane geliştirin.

Örnekler:
İki zaman arasındaki farkı bulan fonksiyon --> tarih3 := CalculateTimeBetween(tarih1,tarih2);
Kullandığınız veritabanı tarih formatına göre çeviren fonksiyon --> tarih2 := ConvertToFormat(tarih1,'yyyy-dd-mm hh:mm:ss');


Bu tarz projenin konusundan bağımsız meselelerle ilgili ihtiyaç duyduğunuz fonksiyonları birleştireceğiniz bir kütüphane, her seferinde bir sonraki projenizde işinizi kolaylaştıracaktır.
Cevapla
#8
(09-02-2019, Saat: 09:08)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Merhaba,

Bu tarz işlemler için kendinize bir kütüphane oluşturmalısınız. DateUtils kütüphanesine göz gezdirin ve ihtiyacınız olan fonksiyon ve özellikleri kullanarak kendinize özel bir kütüphane geliştirin.

Örnekler:
İki zaman arasındaki farkı bulan fonksiyon --> tarih3 := CalculateTimeBetween(tarih1,tarih2);
Kullandığınız veritabanı tarih formatına göre çeviren fonksiyon --> tarih2 := ConvertToFormat(tarih1,'yyyy-dd-mm hh:mm:ss');


Bu tarz projenin konusundan bağımsız meselelerle ilgili ihtiyaç duyduğunuz fonksiyonları birleştireceğiniz bir kütüphane, her seferinde bir sonraki projenizde işinizi kolaylaştıracaktır.

Kesinlikle çok doğru , en kısa zamanda bende kendim ile ilgili böyle bir kütüphane oluşturmalıyım. Çünkü ara ara bende bu tarz sorunlarla karşılaşıyorum. Bu formdan bulduğum çözümlerle genelde çözüme ulaşıyorum.

Bu konu ile ilgili Tuğrul beyin kendi sitesinde çok güzel bir makalesi de var sanırım o da yardımcı olacaktır.

http://www.tugrulhelvaci.com/?p=209


(07-02-2019, Saat: 19:45)mrmarman Adlı Kullanıcıdan Alıntı: Merhaba.

- Giriş kısmı tutarlı bir STRING de olabilir veritabanından TDateTime tipinde de olabilir. Asıl önemli olan hesaplama öncesi hepsinin tarih tipine dönüştürmeye uygun olması. Hataya sebebiyet vermesinin önüne geçilmesi içindir.

- Girişleri "DateTime" tipinde bir değişkene aktarabildiğinizi düşünerek bu aşamadan devam edelim.

- DateUtils diye bir UNIT mevcut. Bunu USES satırlarına eklerseniz aşağıda "DateUtils." dediğiniz anda ( sondaki noktayı koyduğunuz anda ) size seçenekler dökülecektir. Bunları bir incelemenizi öneriyorum. 

Örneğin :

      DateUtils.HourOf();
      DateUtils.MinuteOf();
     DateUtils.DayOf();
     DateUtils.DayOfTheWeek();
     DateUtils.DecodeDateTime();
     DateUtils.HoursBetween();
     DateUtils.DaysBetween();

şeklinde sayısız fonksiyon göreceksiniz. Bunların isimleri size neler yapabileceğinizi öngörmeniz için kılavuz olacaktır.

Teşekkürler  mrmarman  hocam .
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  iki zaman aralığı ahmetb 5 219 02-03-2019, Saat: 12:30
Son Yorum: ahmetb
  SOAPHeaders Debug & Release Farkı yhackup 8 686 17-08-2018, Saat: 11:19
Son Yorum: Tuğrul HELVACI
  asgari geçim indirimi hesabı (agi) erdogan 4 648 05-04-2018, Saat: 11:22
Son Yorum: erdogan
  iki tarih ve saat arasındaki ay gün ve saat farkı erdogan 2 777 31-12-2017, Saat: 19:25
Son Yorum: adelphiforumz
  Bir Byte Her Zaman 8 Bitten Oluşmaz savasabd 3 741 25-11-2017, Saat: 00:09
Son Yorum: savasabd



Konuyu Okuyanlar: 1 Ziyaretçi