Arkadaşlar v.basic olan eski projemde iki tarih arasında bulanan dakika, saat, gün, hafta, ay, yıl, işgünü gibi zaman dilimlerine ait periyotları sayıyordum. ancak benzer bir çalışma ile c# içinde bunu bir türlü yapamadım. Bu konuda tavsiyelerinizi almak istiyorum. DateAdd fonksiyonundaki eklenecek süre ve türünü birer değişkene atayıp içeride kullanıyordum ancak c#'ta bu olay çöktü.
Özetle olay şöyle. 01/01/2023 16:00:00 - 03/01/2023 17:35:00 tarihlerini ele alalım. Bu iki tarih arasında seçtiğim zaman türü neyse onları saydırmak istiyorum. 15 dakika ise bunun arasında kaç tane 15 dakika var? saat ise bunun arasında kaç tane o saatten var? veya hafta ise bunun arasında kaç tane hafta var gibi.
Visual Basic Kodlarım Şöyleydi:
`Select Case hizmet_yanit_turu
Case "Dakika"
yanit = "n"
Case "Saat"
yanit = "h"
Case "Gün"
yanit = "d"
Case "Hafta"
yanit = "ww"
Case "Ay"
yanit = "m"
Case "Yıl"
yanit = "yyyy"
Case "İş Günü"
yanit = "w"
End Select
hedefyanittarihi = FormatDateTime(DateAdd(yanit, hizmet_yanit_suresi, cagri_acilis_tarihi), vbGeneralDate)
hedefduzeltmetarihi = FormatDateTime(DateAdd(duzeltme, hizmet_duzeltme_suresi, hedefyanittarihi), vbGeneralDate)
If FormatDateTime(cagri_yanit_tarihi, vbGeneralDate) <= hedefyanittarihi Then
yenihedefyanittarihi = cagri_yanit_tarihi
yenihedefduzeltmetarihi = DateAdd(duzeltme, hizmet_duzeltme_suresi, yenihedefyanittarihi)
ElseIf FormatDateTime(cagri_yanit_tarihi, vbGeneralDate) > hedefyanittarihi Then
yenihedefyanittarihi = hedefyanittarihi
yenihedefduzeltmetarihi = DateAdd(duzeltme, hizmet_duzeltme_suresi, yenihedefyanittarihi)
End If
periyotyanit = 0
periyotduzeltme = 0
If FormatDateTime(cagri_yanit_tarihi, vbGeneralDate) <= yenihedefyanittarihi Then periyotyanit = 0: GoTo HizmetDuzeltme Else:
trhyanit = yenihedefyanittarihi
Do Until trhyanit >= FormatDateTime(cagri_yanit_tarihi, vbGeneralDate)
trhyanit = DateAdd(yanit, hizmet_yanit_suresi, trhyanit) 'hedef yanıt tarihinin üstüne yanıt süresini ekliyoruz ve sonra periyot sayıyoruz
periyotyanit = periyotyanit + 1
Loop
HizmetDuzeltme:
If FormatDateTime(cagri_kapanis_tarihi, vbGeneralDate) <= yenihedefduzeltmetarihi Then periyotduzeltme = 0: GoTo HesaplamaBitir Else:
trhduzeltme = yenihedefduzeltmetarihi
Do Until trhduzeltme >= FormatDateTime(cagri_kapanis_tarihi, vbGeneralDate)
trhduzeltme = DateAdd(duzeltme, hizmet_duzeltme_suresi, trhduzeltme)
periyotduzeltme = periyotduzeltme + 1
Loop
HesaplamaBitir:
periyotyanit = Nz(periyotyanit, 0)
periyotduzeltme = Nz(periyotduzeltme, 0)
`