Tarih ve Zaman Hesaplamasında Ustalaşın

25 Mart 2022

Formlar, aşağıdaki gibi amaçlar için kullanılırken, Tarih Seçici alanına sıklıkla ihtiyaç duyarlar:

  • Projelerin geri dönüş sürelerini değerlendirirken,
  • Kayıt işlemleri ile uğraşırken,
  • Rezervasyon kayıtlarını yönetirken.

İki tarih arasındaki farkı hesaplamanızın gerekeceği bir durumla karşılaşma ihtimaliniz çok olasıdır. Yeri geldiğinde, aradaki farkı dakikası dakikasına kadar hesaplamanız gerekebilir.

Bu yazımız, hesaplama işlemini gerçekleştirmenizde size rehberlik edecektir. Ancak bu rehberin, size sıfırdan bir form oluşturmak amacıyla hazırlanan bir rehber olmadığını ve yalnızca, iki tarih arasında hesaplama işlemleri gerçekleştirmek için hazırlandığını da hatırlatmamız gerekiyor.

İlk olarak, Epoch Zamanı’nın ne olduğundan bahsetmeliyiz:

Unix epoch (Unix zamanı, POSIX zamanı veya Unix zaman damgası olarak da bilinir), 1 Ocak 1970 (Gece yarısı saati, UTC/GMT saat dilimi) anından itibaren geçen, artık saniyelerin dahil edilmediği (ISO 8601: 1970-01-01T00:00:00Z) toplam saniyedir. Kelime anlamı olarak Epoch, Unix zamanında 0 (1 Ocak 1970, Gece yarısı) demek olsa da, sıklıkla Unix zamanının eş anlamlısı olarak kullanılır.

İngilizce tanım, https://www.epochconverter.com/ adresinden alıntılanmıştır.

Tarih hesaplamalarını gerçekleştirmek için, Form Hesaplama Widget’ını kullanma konusunda bilgi sahibi olmanız önem taşımaktadır. Eğer bu widget’ın özellikleri hakkında yeterli bilgiye sahip olmadığınızı düşünüyorsanız, bu rehbere göz atarak bilgi edinmenizi tavsiye ederiz. Devam edecek olursak, hesaplamalarımızda kullanacağımız, insan tarafından okunabilir zaman türlerinin saniye değerine dönüştürülmüş hallerini aşağıda görebiliriz:

Okunabilir Zaman    Saniye

1 dakika    60 saniye

1 saat    3600 saniye

1 gün    86400 saniye

1 ay (30.44 gün)    2629743 saniye

1 yıl (365.24 gün)    31556926 saniye

Daha sonra hesaplamalarımızda kullanacağımız için, bu saniyeye dönüştürülmüş birimleri bu rehber içerisinden bulabilirsiniz. Ek olarak, Form Hesaplama Widget’larının nasıl kullanılacağı ile ilgili bazı kilit noktaları, neden bazı formüllerin gerekli olduğu ve daha fazlasını listeleyelim:

  • Hesaplamada kullanılacak zaman farkı, Epoch Zamanı formatında olmalıdır; çünkü, bir tarih diğerinden çıkarılırken varsayılan fark, gün birimindedir. Bir günü Epoch Zamanına çevirmek için, 86400 ile çarpacağız.

Formül:
(Tarih2 – Tarih1) * 86400

  • İşlem sonrası Kalan değerleri önemlidir! Hesaplamalarınız çoğunlukla bölme işlemleri etrafında şekillenecektir ve işlemlerin kalan değerleri, geriye kalan ay, gün, saat ve dakikayı hesaplamada hayati öneme sahiptir.

Bir bakış açısıyla görselleştirmek için, 12345’i bir Epoch Zamanı olarak ele alalım. Bu 3 saat, 25 dakika ve 45 saniyeye eşittir.

3 saat sonucunu elde etmek için:

12345 / 3600 = 3.4291666667 Veya 3, Kalan: 1545.

25 dakika sonucunu elde etmek için:

1545 / 60 = 25.75 VEYA 25, Kalan: 45.

  • Widget, bölme işleminden kalan tam sonucu alma imkanı sağlamamaktadır. Bazılarınız, birçok programlama dilinde kullanılan, % veya MOD işlemine aşina olabilir, ancak widgetta bu özellik bulunmamaktadır. Biz alternatif olarak, kalanı almak için bölünen sayının ondalık kısmını kullanacağız.

Örnek:

40 / 6 = 6 Kalan: 4

40 / 6 = 6.6666666667

Yukarıdaki cevapların ikisi de doğrudur ve oradan aşağıdakileri elde ederiz:

Tam sayı: 6

Ondalık basamak: 0.6666666667

Kalan: 4

Bir ondalık basamağı kalana dönüştürmek için, onu, bu örnekte 6 olan bölen ile çarparız:

0.6666666667 x 6 = 4.0000000002
Daha sonra 4’e yuvarlarız.

Bölünenin tam sayısını almak için, floor() fonksiyonunu kullanacağız. floor() fonksiyonunun aşağı, ceil() fonksiyonunun ise yukarı yuvarlamak için kullanıldığını belirtmekte yarar var. Daha sonra bu sayı, ondalık basamağı (yukarıdaki örnekte gösterildiği gibi) almak için bölümden çıkarılacaktır.

İlgili rehber: Form Hesaplamadaki Matematik Fonksiyonlarının Kullanımı

  • Epoch zaman farkı iki bölen ile bölünmelidir:

31556926 Yıl, Ay ve Gün değerlerinin bölenidir.
86400Saat ve Dakika değerlerinin bölenidir.

  • Formunuzda görülmesini istemediğiniz alanları gizleyin. Bir çok durumda, tüm hesaplama widget’larını göstermenize gerek yoktur (örneğin epoch zaman farkı, kalan değerin hesaplandığı alan ve benzeri).

Bu rehberde kullanacak olduğumuz örnek forma bu linkten ulaşabilirsiniz. O halde başlayalım: 

1. Tüm gerekli alanları ekleyin

  • İki tane Tarih Seçici Alanı
  • Form Hesaplama Widget’ları

En az iki veya üç hesaplama widget’ının, Epoch Farkını ve Kalan değeri (yıl/ay/gün veya saat/dakika değerlerini veya her ikisini) hesaplamak için, formunuzda her zaman ekli bulunması gerekmektedir. Geri kalanlar tercihinize bağlıdır ve gereksiniminize bağlı olarak yenilerini ekleyebilirsiniz.

Örnek:

Eğer aradaki farkı yalnızda saat ve dakika olarak almanız gerekiyorsa, yalnızca 4 tane hesaplama widget’ına ihtiyacınız var:

  • Epoch Farkı
  • Saat/dakika için kalan değer
  • Saat
  • Dakika

Eğer fark hesaplaması için ay, gün, saat, ve dakika değerlerini almanız gerekiyorsa, 7 tane hesaplama widget’ına ihtiyacınız olacaktır:

  • Epoch Farkı
  • Ay/gün için kalan değer
  • Saat/dakika için kalan değer
  • Ay
  • Gün
  • Saat
  • Dakika

Oluşturduğumuz demo form, 13 tane Form Hesaplama Widget’ı kullanmaktadır:

  • 3 tane gerekli widget, Epoch Farkı and 2 adet Kalan Değer için,
  • 5 tane widget, yıl > ay > gün > saat > dakika değerleri arasındaki asıl fark için,
  • 5 tane widget, yıl, ay, gün, saat, dakika zaman birimlerinin her birisinin dökümü için.

2. Tarih Seçici Alanlarını ayarlayın

Tarih ve Zaman Hesaplamasında Ustalaşın Image-1

Tarih Seçici Alanının özellikler penceresini açın ve Saat sekmesine gidin. Saat alanını, üzerine tıklayarak açık hale getirin. Daha sonra, Dakika Aralığını 1 yapın ve Saat Formatını 24 Saat olarak seçin.

3. Form Hesaplama Widget’larını SALT OKUNUR olarak işaretleyin

Bu adım isteğe bağlı olsa da, kullanıcıların formu doldururken yanlışlıkla hesaplama değerlerini değiştirmelerini önlemek için, aktif edilmesi tercih edilir.

Tarih ve Zaman Hesaplamasında Ustalaşın Image-2

4. İşte eğlenceli kısmı, formülü ekleyin

Tüm zaman birimleri bu rehberde çevrilmiş olacak, o yüzden formunuz için ihtiyacınız olan formülü buradan seçmeniz yeterlidir.

Verilen bilgiler:

Tarih 1 = 01 Ocak 2017, 01:05

Tarih 2 = 30 Haziran 2036, 20:50

Epoch değeri = 615239100

Epoch Zaman Farkı Formülü:

(Tarih2Tarih1) * 86400

Epoch Zamanını saniye değerinde almak için farkı 86400 ile çarpın.

Kalan Değer Formülü (Yıl > Ay > Gün için):

(Epoch Farkı / 31556926 – (floor (Epoch Farkı / 31556926))) * 31556926

Tüm bunlar karmaşık görünüyor olabilir, ancak burada tek yaptığımız kalan değeri hesaplamak. Epoch Zamanı 31556926’ya bölündü çünkü bu bir yılda bulunan toplam saniye miktarıdır. Daha sonra orijinal bölüm değerinden, yuvarlanmış bölüm değerini çıkararak ondalık değeri elde ettik. Daha sonra bu değeri tekrar 31556926 ile çarparak kalanı elde ettik.

Kalan Değer Formülü (Saat > Dakika için):

(Epoch Farkı / 86400 – (

floor (Epoch Farkı / 86400))) * 86400

Benzer işlemler fakat bu defa, bir gündeki kalan dakika/saatleri almak için 86400 ile bölüyoruz.

Yıl formülü:

floor (Epoch Farkı / 31556926)

Bu defaki oldukça basit, yalnızca Epoch Zamanını 31556926’e böl ve sonra bölüm değerini aşağı yuvarla.

Ay formülü:

floor (Yıl/Ay/Gün için Kalan Değer / 2629743)

Şimdi, Y/A/G için Kalan Değeri kullanacağız ve kalan toplam ayı hesaplamak için 2629743’e böleceğiz.

Gün formülü:

floor (((Yıl/Ay/Gün için Kalan Değer / 2629743) – Ay) * 30.44

Bunun kalan günleri hesaplaması için 30.44 ile çarpılması gerekiyor.

Saat formülü:

floor(Saat:Dakika için Kalan Değer / 3600)

Saat:Dakika için Kalan Değeri 3600’e böl (bir saatteki toplam saniye miktarına). Daha sonra sonucu aşağı yuvarla.

Dakika formülü:

round(((Saat:Dakika için Kalan Değer / 3600) – Saat) * 60)

Bu defa floor() yerine, round() fonksiyonunu kullanacağız. Zamanın daha üst birimlerinde, daha küçük zaman birimlerinin kalan değerine erişmek için, floor() fonksiyonunun kullanılması gerekiyor. Ve dakika en küçük birim olduğu için, yuvarlanması gerekiyor.

Sonraki 5 formül, ihtiyaç olması halinde kullanılabilecek opsiyonel formüllerdir. Tüm zaman birimlerinin tek başına dökümü aşağıdaki gibidir:

Yıl:

floor(Epoch Farkı / 31556926)

Ay:

floor(Epoch Farkı / 2629743)

Gün:

floor(Epoch Farkı / 86400)

Saat:

floor(Epoch Farkı / 3600)

Dakika:

floor(Epoch Farkı / 60)

Her ne kadar ilk başta karmaşık görürebiliyor olsa da, bir kez içerisine daldığınızda, özellikle kalan değeri alma ve hangi dönüşüm biriminin kullanılacağı konularını pratik yapmaya başladığınızda, çok daha anlaşılır hale gelecektir.
Demo formu klonlayarak yukarıdaki hesaplamaların nasıl çalıştığı hakkında daha fazla fikir sahibi olabilirsiniz.

İlgili rehber: Bir Formu URL Adresini Kullanarak Klonlama

Yorum ve önerilerinizi aşağıdaki bölümden bize iletmenizden memnuniyet duyarız. Bir sorunuz olması durumunda, size yardımcı olabilmemiz için Destek Forumumuzdan bizimle iletişime geçebilirsiniz.

İletişim Desteği:

Müşteri destek ekibimiz 7/24 hizmet vermektedir ve ortalama yanıt süremiz bir veya iki saat arasında değişmektedir.
Ekibimizle aşağıda belirtilen linkler aracılığıyla iletişime geçebilirsiniz:

Destek Forumu: https://www.jotform.com/answers/

Jotform Desteği ile iletişime geçmek için: https://www.jotform.com/contact/

Yorum Gönder:

Jotform Avatar
Bu site reCAPTCHA ve Google Gizlilik Politikası tarafından korunmaktadır ve Hizmet Koşulları geçerlidir.

Podo Comment İlk yorum yapan sen ol.